আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশানে গুগল সাইন ইন একীকরণ করা হচ্ছে

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

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

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

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

  1. আপনার সাইন-ইন ক্রিয়াকলাপের onCreate পদ্ধতিতে, আপনার অ্যাপ্লিকেশনটির জন্য প্রয়োজনীয় ব্যবহারকারী ডেটার জন্য অনুরোধ করতে গুগল সাইন-ইন কনফিগার করুন। উদাহরণ হিসেবে বলা যায়, অনুরোধ ব্যবহারকারীদের আইডি ও সাধারণ প্রোফাইল তথ্য Google সাইন-ইন কনফিগার করতে, একটি তৈরি GoogleSignInOptions সঙ্গে আপত্তি DEFAULT_SIGN_IN প্যারামিটার। অনুরোধ ব্যবহারকারীদের ইমেল ঠিকানায় পাশাপাশি, তৈরি 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();

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

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

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

বিদ্যমান সাইন ইন ব্যবহারকারীর জন্য পরীক্ষা করুন

আপনার ক্রিয়াকলাপের অন onStart পদ্ধতিতে, কোনও ব্যবহারকারী ইতিমধ্যে গুগলের সাথে আপনার অ্যাপ্লিকেশনটিতে সাইন ইন করেছে কিনা তা পরীক্ষা করুন।

// 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 পরিবর্তে) ফেরত দেয় তবে ব্যবহারকারী ইতিমধ্যে গুগলের সাথে আপনার অ্যাপে সাইন ইন করেছেন। সেই অনুযায়ী আপনার ইউআই আপডেট করুন — তা হ'ল সাইন-ইন বোতামটি লুকান, আপনার মূল ক্রিয়াকলাপটি চালু করুন বা আপনার অ্যাপ্লিকেশনটির জন্য উপযুক্ত whatever

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

আপনার অ্যাপ্লিকেশনটিতে Google সাইন ইন বোতাম যুক্ত করুন

  1. স্ট্যান্ডার্ড গুগল সাইন-ইন বোতাম আপনার অ্যাপ্লিকেশনটির বিন্যাসে 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 সাথে ব্যবহারকারীর ইমেল ঠিকানা, getEmail সহ ব্যবহারকারীর গুগল আইডি (ক্লায়েন্ট-পার্শ্ব ব্যবহারের জন্য) এবং getId সহ ব্যবহারকারীর জন্য একটি আইডি টোকেন পেতে getIdToken । আপনার যদি বর্তমানে সাইন ইন থাকা ব্যবহারকারীটিকে ব্যাকএন্ড সার্ভারে পাস করার দরকার হয়, আপনার ব্যাকএন্ড সার্ভারে আইডি টোকেন প্রেরণ করুন এবং সার্ভারে টোকেনটি বৈধতা দিন।