للحصول على أفضل تجربة للمستخدم، يجب طلب أقل نطاق ممكن عند تسجيل دخول المستخدمين في البداية. إذا لم تكن الوظيفة الأساسية لتطبيقك مرتبطة
بإحدى خدمات 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
للبحث عن مجموعة من الأذونات والحصول عليها
بسهولة أكبر.