যদি ওয়ান ট্যাপ সাইন-ইন আপনার চাহিদা পূরণ করে, তবে পরিবর্তে এটি ব্যবহার করার কথা বিবেচনা করুন। One Tap-এ একটি আপডেট হওয়া ব্যবহারকারীর অভিজ্ঞতা এবং অন্যান্য উন্নতি রয়েছে৷

একজন ব্যবহারকারীকে সাইন-ইন ইঙ্গিত দিন

ব্যবহারকারীর শংসাপত্রগুলি পুনরুদ্ধার করার অনুরোধগুলি ব্যর্থ হতে পারে যখন কোনও ব্যবহারকারী এখনও শংসাপত্রগুলি সংরক্ষণ করেনি বা যখন কোনও ব্যবহারকারী এখনও আপনার অ্যাপে সাইন আপ করেননি৷ এই পরিস্থিতিতে, ব্যবহারকারীর নাম এবং ইমেল ঠিকানার মতো সাইন-ইন ইঙ্গিতগুলি পুনরুদ্ধার করতে শংসাপত্র API ব্যবহার করুন৷ আপনার অ্যাপ্লিকেশানের সাইন-ইন এবং সাইন-আপ ফর্মগুলি আগে থেকে পূরণ করতে এই ইঙ্গিতগুলি ব্যবহার করুন, আপনার অ্যাপের অন-বোর্ডিং প্রক্রিয়াকে দ্রুততর করুন৷

অ্যান্ড্রয়েড 6.0 (মার্শম্যালো) এবং নতুন সংস্করণে, শংসাপত্র API এর মাধ্যমে সাইন-ইন ইঙ্গিত পুনরুদ্ধার করতে আপনার অ্যাপটিকে কোনো ডিভাইস বা রানটাইম অনুমতির অনুরোধ করার প্রয়োজন নেই।

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

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

সাইন ইন ইঙ্গিত পুনরুদ্ধার করুন

সাইন-ইন ইঙ্গিত পুনরুদ্ধার করতে, প্রথমে একটি HintRequest অবজেক্ট তৈরি করে ইঙ্গিত নির্বাচক ডায়ালগ কনফিগার করুন। তারপরে, ব্যবহারকারীকে একটি ইমেল ঠিকানা বেছে নেওয়ার জন্য অনুরোধ জানানোর জন্য একটি উদ্দেশ্য পেতে CredentialsClient.getHintPickerIntent() -এ HintRequest অবজেক্টটি পাস করুন। অবশেষে, startIntentSenderForResult() দিয়ে অভিপ্রায় শুরু করুন।

HintRequest hintRequest = new HintRequest.Builder()
        .setHintPickerConfig(new CredentialPickerConfig.Builder()
                .setShowCancelButton(true)
                .build())
        .setEmailAddressIdentifierSupported(true)
        .setAccountTypes(IdentityProviders.GOOGLE)
        .build();

PendingIntent intent = mCredentialsClient.getHintPickerIntent(hintRequest);
try {
    startIntentSenderForResult(intent.getIntentSender(), RC_HINT, null, 0, 0, 0);
} catch (IntentSender.SendIntentException e) {
    Log.e(TAG, "Could not start hint picker Intent", e);
}

স্মার্ট লক সাইন-ইন ইঙ্গিত চয়নকারী

ব্যবহারকারীকে ব্যবহার করার জন্য একটি ইমেল ঠিকানা চয়ন করতে বলা হয়।

তারপর, কার্যকলাপের onActivityResult() পদ্ধতিতে, Credential.EXTRA_KEY পার্সেল থেকে ইঙ্গিতগুলি পুনরুদ্ধার করুন, ব্যবহারকারী আপনার ব্যবহারকারী ডাটাবেসে আছে কিনা তা পরীক্ষা করুন এবং শংসাপত্রের ইঙ্গিত দিয়ে উপযুক্ত কার্যকলাপ শুরু করুন৷

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == RC_HINT) {
        if (resultCode == RESULT_OK) {
            Credential credential = data.getParcelableExtra(Credential.EXTRA_KEY);
            Intent intent;
            // Check for the user ID in your user database.
            if (userDatabaseContains(credential.getId())) {
                intent = new Intent(this, SignInActivity.class);
            } else {
                intent = new Intent(this, SignUpNewUserActivity.class);
            }
            intent.putExtra("com.mycompany.myapp.SIGNIN_HINTS", credential);
            startActivity(intent);
        } else {
            Log.e(TAG, "Hint Read: NOT OK");
            Toast.makeText(this, "Hint Read Failed", Toast.LENGTH_SHORT).show();
        }
    }

    ...

}

সাইন-ইন ফর্ম আগে থেকে পূরণ করুন

যদি ব্যবহারকারী আপনার ব্যবহারকারীর ডাটাবেসে থাকে এবং আপনি আপনার অ্যাপের সাইন-ইন কার্যকলাপ শুরু করেন, তাহলে আপনি (ঐচ্ছিকভাবে) Credential বস্তুটিতে একটি আইডি টোকেন রয়েছে কিনা তা পরীক্ষা করতে পারেন। যদি তাই হয়, আপনি ব্যবহারকারীকে পাসওয়ার্ড টাইপ করার প্রয়োজন ছাড়াই আইডি টোকেন দিয়ে সাইন ইন করতে পারেন৷

যদি Credential বস্তুতে একটি আইডি টোকেন না থাকে (অথবা আপনি আইডি টোকেন ব্যবহার করতে চান না), তাহলে আপনি অভিপ্রায়ে যোগ করেছেন এমন ইঙ্গিত দিয়ে সাইন-ইন ক্ষেত্রগুলিকে প্রাক-পূর্ণ করুন৷

public class SignInActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent = getIntent();
        Credential credential = intent.getParcelableExtra("com.mycompany.myapp.SIGNIN_HINTS");

        // Pre-fill ID field
        mUsernameView.setText(credential.getId());

        ...
    }

    ...
}

সাইন আপ ফর্ম প্রাক পূরণ করুন

যদি ব্যবহারকারী আপনার ব্যবহারকারীর ডাটাবেসে না থাকে এবং আপনি আপনার অ্যাপের সাইন-আপ কার্যকলাপ শুরু করেন, তাহলে সাইন-ইন ইঙ্গিতগুলি দিয়ে সাইন-আপ ক্ষেত্রগুলি পূর্ব-পূরণ করুন যা আপনি অভিপ্রায়ে যোগ করেছেন।

public class SignUpNewUserActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent = getIntent();
        Credential credential = intent.getParcelableExtra("com.mycompany.myapp.SIGNIN_HINTS");

        // Pre-fill sign-up fields
        mUsernameView.setText(credential.getId());
        mDisplaynameView.setText(credential.getName()); // Might be null.

        ...
    }

    ...
}

ঐচ্ছিকভাবে, আপনি Credential অবজেক্টে একটি আইডি টোকেন আছে কিনা যা যাচাই করা ইমেল ঠিকানা রয়েছে তাও পরীক্ষা করতে পারেন। যদি তাই হয়, আপনি আপনার অ্যাপের ইমেল যাচাইকরণ ধাপটি এড়িয়ে যেতে পারেন, যেহেতু ইমেল ঠিকানাটি ইতিমধ্যেই Google দ্বারা যাচাই করা হয়েছে৷