আপনার অ্যান্ড্রয়েড অ্যাপে Google সাইন-ইন সংহত করা হচ্ছে

আপনার অ্যান্ড্রয়েড অ্যাপে Google সাইন-ইন সংহত করতে, Google সাইন-ইন কনফিগার করুন এবং আপনার অ্যাপের লেআউটে একটি বোতাম যোগ করুন যা সাইন-ইন প্রবাহ শুরু করে।

তুমি শুরু করার আগে

একটি Google API কনসোল প্রকল্প কনফিগার করুন এবং আপনার Android স্টুডিও প্রকল্প সেট আপ করুন

Google সাইন-ইন এবং GoogleSignInClient অবজেক্ট কনফিগার করুন

  1. আপনার সাইন-ইন কার্যকলাপের onCreate পদ্ধতিতে, আপনার অ্যাপের জন্য প্রয়োজনীয় ব্যবহারকারীর ডেটার অনুরোধ করতে Google সাইন-ইন কনফিগার করুন। উদাহরণস্বরূপ, ব্যবহারকারীদের আইডি এবং মৌলিক প্রোফাইল তথ্যের জন্য অনুরোধ করতে Google সাইন-ইন কনফিগার করতে, DEFAULT_SIGN_IN প্যারামিটার সহ একটি GoogleSignInOptions অবজেক্ট তৈরি করুন৷ ব্যবহারকারীদের ইমেল ঠিকানাগুলিও অনুরোধ করতে, GoogleSignInOptions অবজেক্টটি requestEmail বিকল্পের সাথে তৈরি করুন৷

    // Configure sign-in to request the user's ID, email address, and basic
    // profile. ID and basic profile are included in DEFAULT_SIGN_IN.
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();

    আপনি যদি Google API অ্যাক্সেস করার জন্য অতিরিক্ত স্কোপের অনুরোধ করতে চান, সেগুলিকে requestScopes দিয়ে নির্দিষ্ট করুন। সর্বোত্তম ব্যবহারকারীর অভিজ্ঞতার জন্য, সাইন-ইন করার সময়, শুধুমাত্র সেই স্কোপের জন্য অনুরোধ করুন যা আপনার অ্যাপটিকে ন্যূনতমভাবে কাজ করার জন্য প্রয়োজনীয়। আপনার প্রয়োজন হলেই যেকোন অতিরিক্ত স্কোপের অনুরোধ করুন, যাতে আপনার ব্যবহারকারীরা তাদের সম্পাদিত কোনো অ্যাকশনের প্রেক্ষাপটে সম্মতি স্ক্রীন দেখতে পান। অতিরিক্ত সুযোগের অনুরোধ দেখুন।

  2. তারপর, আপনার সাইন-ইন কার্যকলাপের onCreate পদ্ধতিতে, আপনার নির্দিষ্ট করা বিকল্পগুলির সাথে একটি GoogleSignInClient অবজেক্ট তৈরি করুন৷

    // Build a GoogleSignInClient with the options specified by gso.
    mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

একটি বিদ্যমান সাইন-ইন ব্যবহারকারীর জন্য চেক করুন

আপনার অ্যাক্টিভিটির onStart পদ্ধতিতে, একজন ব্যবহারকারী ইতিমধ্যেই Google-এর মাধ্যমে আপনার অ্যাপে সাইন ইন করেছেন কিনা তা পরীক্ষা করুন।

// Check for existing Google Sign In account, if the user is already signed in
// the GoogleSignInAccount will be non-null.
GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
updateUI(account);

যদি GoogleSignIn.getLastSignedInAccount একটি GoogleSignInAccount অবজেক্ট ফেরত দেয় ( null এর পরিবর্তে), ব্যবহারকারী ইতিমধ্যেই Google এর সাথে আপনার অ্যাপে সাইন ইন করেছেন৷ সেই অনুযায়ী আপনার UI আপডেট করুন—অর্থাৎ সাইন-ইন বোতাম লুকান, আপনার প্রধান কার্যকলাপ চালু করুন, অথবা আপনার অ্যাপের জন্য উপযুক্ত যাই হোক না কেন।

যদি GoogleSignIn.getLastSignedInAccount null রিটার্ন করে, ব্যবহারকারী এখনও Google এর সাথে আপনার অ্যাপে সাইন ইন করেননি। Google সাইন-ইন বোতামটি প্রদর্শন করতে আপনার UI আপডেট করুন৷

আপনার অ্যাপে Google সাইন-ইন বোতাম যোগ করুন

  1. আদর্শ Google সাইন-ইন বোতাম আপনার অ্যাপ্লিকেশনের লেআউটে SignInButton যোগ করুন:

    <com.google.android.gms.common.SignInButton
     android:id="@+id/sign_in_button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />
    
  2. ঐচ্ছিক : আপনি যদি আপনার নিজের সাইন-ইন বোতাম সম্পদ প্রদানের পরিবর্তে ডিফল্ট সাইন-ইন বোতাম গ্রাফিক ব্যবহার করেন, তাহলে আপনি setSize পদ্ধতিতে বোতামের আকার কাস্টমাইজ করতে পারেন।

    // Set the dimensions of the sign-in button.
    SignInButton signInButton = findViewById(R.id.sign_in_button);
    signInButton.setSize(SignInButton.SIZE_STANDARD);
    
  3. Android কার্যকলাপে (উদাহরণস্বরূপ, onCreate পদ্ধতিতে), ক্লিক করার সময় ব্যবহারকারীকে সাইন ইন করতে আপনার বোতামের OnClickListener নিবন্ধন করুন:

    findViewById(R.id.sign_in_button).setOnClickListener(this);
    

সাইন-ইন প্রবাহ শুরু করুন

  1. সাইন-ইন অ্যাকাউন্ট চয়নকারীর ছবি কার্যকলাপের onClick পদ্ধতিতে, getSignInIntent পদ্ধতিতে একটি সাইন-ইন উদ্দেশ্য তৈরি করে এবং startActivityForResult দিয়ে অভিপ্রায় শুরু করে সাইন-ইন বোতামের ট্যাপগুলি পরিচালনা করুন।

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.sign_in_button:
                signIn();
                break;
            // ...
        }
    }
    
    private void signIn() {
        Intent signInIntent = mGoogleSignInClient.getSignInIntent();
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }

    অভিপ্রায় শুরু করা ব্যবহারকারীকে সাইন ইন করার জন্য একটি Google অ্যাকাউন্ট নির্বাচন করতে অনুরোধ করে৷ আপনি profile , email এবং openid এর বাইরে স্কোপের অনুরোধ করলে, ব্যবহারকারীকে অনুরোধ করা সংস্থানগুলিতে অ্যাক্সেস দেওয়ার জন্যও অনুরোধ করা হয়।

  2. ব্যবহারকারী সাইন ইন করার পরে, আপনি কার্যকলাপের onActivityResult পদ্ধতিতে ব্যবহারকারীর জন্য একটি GoogleSignInAccount অবজেক্ট পেতে পারেন।

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
    
        // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
        if (requestCode == RC_SIGN_IN) {
            // The Task returned from this call is always completed, no need to attach
            // a listener.
            Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
            handleSignInResult(task);
        }
    }

    GoogleSignInAccount অবজেক্টে সাইন-ইন করা ব্যবহারকারী সম্পর্কে তথ্য থাকে, যেমন ব্যবহারকারীর নাম।

    private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
        try {
            GoogleSignInAccount account = completedTask.getResult(ApiException.class);
    
            // Signed in successfully, show authenticated UI.
            updateUI(account);
        } catch (ApiException e) {
            // The ApiException status code indicates the detailed failure reason.
            // Please refer to the GoogleSignInStatusCodes class reference for more information.
            Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
            updateUI(null);
        }
    }

    এছাড়াও আপনি getEmail এর সাথে ব্যবহারকারীর ইমেল ঠিকানা, getId এর সাথে ব্যবহারকারীর Google ID (ক্লায়েন্ট-সাইড ব্যবহারের জন্য) এবং getIdToken এর সাথে ব্যবহারকারীর জন্য একটি আইডি টোকেন পেতে পারেন। আপনি যদি বর্তমানে সাইন-ইন করা ব্যবহারকারীকে একটি ব্যাকএন্ড সার্ভারে পাস করতে চান, তাহলে আপনার ব্যাকএন্ড সার্ভারে আইডি টোকেন পাঠান এবং সার্ভারে টোকেনটি যাচাই করুন।