আপনার অ্যান্ড্রয়েড অ্যাপে গুগল সাইন-ইন ইন্টিগ্রেট করুন

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

শুরু করার আগে

একটি গুগল ক্লাউড কনসোল প্রকল্প কনফিগার করুন এবং আপনার অ্যান্ড্রয়েড স্টুডিও প্রকল্প সেট আপ করুন।

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

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

    // 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. সাদা 'G' লোগো এবং '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. অ্যান্ড্রয়েড কার্যকলাপে (উদাহরণস্বরূপ, 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 ব্যবহার করে ব্যবহারকারীর জন্য একটি ID টোকেন পেতে পারেন। যদি আপনার সাইন-ইন করা ব্যবহারকারীকে ব্যাকএন্ড সার্ভারে পাঠাতে হয়, তাহলে আপনার ব্যাকএন্ড সার্ভারে ID টোকেনটি পাঠান এবং সার্ভারে টোকেনটি যাচাই করুন।