للحصول على أفضل تجربة للمستخدم، يجب طلب أقل نطاق ممكن عند تسجيل دخول المستخدمين في البداية. إذا لم تكن الوظيفة الأساسية لتطبيقك مرتبطة بأحد خدمات Google، غالبًا ما تكون عملية ضبط GoogleSignInOptions.DEFAULT_SIGN_IN
هي كل ما تحتاجه عند تسجيل الدخول.
إذا كان تطبيقك يتضمّن ميزات يمكنها الاستفادة من بيانات Google API، ولكنها ليست مطلوبة كجزء من الوظائف الأساسية لتطبيقك، يجب تصميم تطبيقك ليكون قادرًا على التعامل بسلاسة مع الحالات التي يتعذّر فيها الوصول إلى بيانات واجهة برمجة التطبيقات. على سبيل المثال، يمكنك إخفاء قائمة بالملفات المحفوظة مؤخرًا عندما لا يمنح المستخدم إذنًا بالوصول إلى Drive.
يجب طلب النطاقات الإضافية التي تحتاجها للوصول إلى Google APIs فقط عندما ينفّذ المستخدم إجراءً يتطلّب الوصول إلى واجهة برمجة تطبيقات معيّنة. على سبيل المثال، يمكنك طلب الإذن بالوصول إلى حساب المستخدم على Drive فقط عندما يضغط المستخدم على الزر "حفظ في Drive" للمرة الأولى.
باستخدام هذه الطريقة، يمكنك تجنُّب إرباك المستخدمين الجدد أو طلب أذونات معيّنة منهم بدون توضيح السبب.
طلب الأذونات المطلوبة لإجراءات المستخدم
عندما ينفّذ مستخدم إجراءً يتطلّب نطاقًا لم يتم طلبه عند تسجيل الخطوة، اتصل بالرقم GoogleSignIn.hasPermissions
للتحقّق مما إذا كان المستخدم قد منح الأذونات المطلوبة. إذا لم يكن الأمر كذلك، اتصل بـ GoogleSignIn.requestPermissions
لبدء نشاط يطلب النطاقات الإضافية المطلوبة من
المستخدِم.
على سبيل المثال، إذا نفَّذ مستخدم إجراءً يتطلب الوصول إلى مساحة التخزين في تطبيقه على Drive، عليك اتّباع الخطوات التالية:
if (!GoogleSignIn.hasPermissions(
GoogleSignIn.getLastSignedInAccount(getActivity()),
Drive.SCOPE_APPFOLDER)) {
GoogleSignIn.requestPermissions(
MyExampleActivity.this,
RC_REQUEST_PERMISSION_SUCCESS_CONTINUE_FILE_CREATION,
GoogleSignIn.getLastSignedInAccount(getActivity()),
Drive.SCOPE_APPFOLDER);
} else {
saveToDriveAppFolder();
}
في دالة onActivityResult
callback لنشاطك، يمكنك التحقّق مما إذا تم الحصول على الأذونات المطلوبة بنجاح، وإذا كان الأمر كذلك، يمكنك تنفيذ إجراء المستخدم.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
if (RC_REQUEST_PERMISSION_SUCCESS_CONTINUE_FILE_CREATION == requestCode) {
saveToDriveAppFolder();
}
}
}
يمكنك أيضًا تمرير GoogleSignInOptionsExtension
إلى hasPermissions
و
requestPermissions
للتحقق من توفّر مجموعة من الأذونات والحصول عليها بشكلٍ
أكثر ملاءمةً.