️ من الإصدار 6.0.0، الحد الأدنى المطلوب لإصدار cordova-ios هو 4.5.0. هل تحتاج إلى استخدام إصدار أقل من cordova-ios؟ استخدم إصدار البرنامج المساعد 5.3.2 أو أقل.
idToken
serverAuthCode
يتيح لك هذا المكون الإضافي مصادقة المستخدمين والتعرف عليهم من خلال تسجيل الدخول بحساب Google على نظامي التشغيل iOS وAndroid. بمجرد إخراج المنتج من الصندوق، ستتلقى البريد الإلكتروني واسم العرض والاسم الأول واسم العائلة وعنوان URL لصورة الملف الشخصي ومعرف المستخدم. يمكنك أيضًا تكوينه للحصول على idToken وserverAuthCode.
يغطي هذا المكون الإضافي الوصول إلى Google Sign-In API فقط. يجب تنفيذ المزيد من الوصول إلى واجهة برمجة التطبيقات (API) لكل حالة استخدام ولكل مطور.
أندرويد
دائرة الرقابة الداخلية
للتواصل مع Google، يلزمك إجراء بعض الإعدادات الشاقة، آسف.
يوصى (بشدة) باستخدام نفس المشروع لكل من iOS وAndroid.
انتقل إلى config.xml
الخاص بك وتأكد من أن اسم الحزمة الخاصة بك (أي معرف التطبيق) هو ما تريده. استخدم اسم الحزمة هذا عند إعداد iOS وAndroid في الخطوات التالية! إذا لم تقم بذلك، فمن المحتمل أن تحصل على خطأ 12501، "تم إلغاء المستخدم" على الرغم من عدم إلغاء عملية تسجيل الدخول مطلقًا.
تعتبر هذه الخطوة مهمة بشكل خاص إذا كنت تستخدم إطار عمل مثل Ionic لدعم مشروعك. عندما تقوم بإنشاء المشروع، يكون config.xml
اسم حزمة عنصر نائب، على سبيل المثال com.ionic.*، بحيث يمكنك البدء في التطوير على الفور.
xml version = ' 1.0 ' encoding = ' utf-8 ' ?>
< widget id = " ** REPLACE THIS VALUE ** " ...>
...
widget >
يتطلب النظام الأساسي للمتصفح معرف WEB_APPLICATION_CLIENT_ID
صالحًا تم إنشاؤه في Google Developer Console. تأكد من إضافة عنوان URL الخاص بك (على سبيل المثال: http://localhost:3000
) إلى قسم أصول JavaScript المعتمدة . انظر لقطة الشاشة هذه على سبيل المثال
للحصول على iOS REVERSED_CLIENT_ID
، قم بإنشاء ملف تكوين هنا. يحتوي ملف GoogleService-Info.plist
هذا على REVERSED_CLIENT_ID
الذي ستحتاج إليه أثناء التثبيت. هذه القيمة مطلوبة فقط لنظام iOS.
يُعرف REVERSED_CLIENT_ID
أيضًا باسم "نظام URL لنظام التشغيل iOS" على وحدة تحكم المطور.
يؤدي تسجيل الدخول على نظام التشغيل iOS إلى نقل المستخدم إلى SafariViewController من خلال Google SDK، بدلاً من متصفح Safari المنفصل.
لتكوين Android، قم بإنشاء ملف التكوين هنا. قم بتمكين تسجيل الدخول بحساب Google وأضف تطبيق Android لإضافة بصمة SHA1. بمجرد تمكين تسجيل الدخول بحساب Google، ستقوم Google تلقائيًا بإنشاء بيانات الاعتماد الضرورية في Developer Console للويب وAndroid. ليست هناك حاجة لإضافة ملف google-services.json الذي تم إنشاؤه إلى مشروع كوردوفا الخاص بك. قد تحتاج إلى تكوين شاشة الموافقة.
تأكد من تنفيذ خطوات keytool
كما هو موضح هنا وإلا ستفشل المصادقة (افعل ذلك لكل من الإصدار وتصحيح الأخطاء).
مهم:
keytool
، تعرض نوعين من بصمات الشهادات، الإصدار والتصحيح ، عند إنشاء ملف التكوين، من الأفضل استخدام بصمة شهادة التصحيح ، بعد ذلك، عليك الانتقال إلى مدير بيانات اعتماد Google، وإنشاء ملف يدويًا بيانات اعتماد لعميل OAuth2 باستخدام بصمة شهادة الإصدار الخاصة بك. يعد هذا ضروريًا لعمل تطبيقك في كل من إصدارات التطوير والإنتاج. $ keytool -exportcert -keystore -list -v -alias
سيستخدم تسجيل الدخول على Android الحسابات التي تم تسجيل الدخول إليها على جهاز المستخدم.
لإعداد إصدار خدمات Google Play، يمكنك استخدام معلمة PLAY_SERVICES_VERSION (بقيمة 11.8.0 افتراضيًا). إنه مفيد لتجنب التعارضات مع المكونات الإضافية الأخرى التي تستخدم أي إصدار آخر مختلف من خدمة Google Play، لأنها يجب أن تكون نفس الإصدار.
تعيد Google توقيع تطبيقك بشهادة مختلفة عند نشره في متجر Play. بمجرد نشر تطبيقك، انسخ بصمة SHA-1 الخاصة بـ "شهادة توقيع التطبيق"، الموجودة في قسم "توقيع التطبيق" ضمن "إدارة الإصدار"، في Google Play Console. الصق بصمة الإصبع هذه في معرف عميل Release OAuth في Google Credentials Manager.
إذا كنت ترغب في الحصول على idToken
أو serverAuthCode
مرة أخرى من عملية تسجيل الدخول، فستحتاج إلى تمرير معرف العميل لتطبيق الويب الخاص بمشروعك. يمكن العثور على ذلك في صفحة بيانات اعتماد واجهة برمجة التطبيقات الخاصة بمشروعك على وحدة تحكم مطوري Google.
هذا البرنامج المساعد متوافق مع:
إليك كيفية العمل (قم بعمل نسخة احتياطية لمشروعك أولاً!):
باستخدام Cordova CLI وnpm:
$ cordova plugin add cordova-plugin-googleplus --save --variable REVERSED_CLIENT_ID=myreversedclientid --variable WEB_APPLICATION_CLIENT_ID=mywebapplicationclientid
$ cordova prepare
استخدام Cordova CLI لجلب أحدث إصدار من GitHub:
$ cordova plugin add https://github.com/EddyVerbruggen/cordova-plugin-googleplus --save --variable REVERSED_CLIENT_ID=myreversedclientid --variable WEB_APPLICATION_CLIENT_ID=mywebapplicationclientid
$ cordova prepare
مهم:
يرجى ملاحظة أن myreversedclientid
هو مكان لمعرف العميل المعكوس الذي تجده في ملف تكوين iOS الخاص بك. لا تحيط هذه القيمة بعلامات الاقتباس. (تطبيقات iOS فقط)
إذا كنت تقوم بإنشاء تطبيق مختلط (iOS وAndroid) ، أو تطبيق Android، فيجب عليك استبدال myreversedclientid
بالقيمة العكسية لمعرف العميل في بيانات اعتماد الإصدار التي تم إنشاؤها في الخطوة 3، في وحدة تحكم مطوري Google، سيكون هذا: "com .googleusercontent.apps. uniqueId
" ، بدون علامات الاقتباس. مثال: يصبح "123-abc123.apps.googleusercontent.com" هو "com.googleusercontent.apps.123-abc123".
myreversedclientid
هو مكان لمعرف عميل Oauth الذي تم إنشاؤه خصيصًا لتطبيق الويب في وحدة تحكم Google Developer's.
يتم جلب GooglePlus.js تلقائيًا. ليست هناك حاجة لتغيير أو إضافة أي شيء في HTML الخاص بك.
أضف هذا إلى ملف config.xml الخاص بك:
بالنسبة لإصدار NPM (المستقر):
< plugin name = " cordova-plugin-googleplus " source = " npm " >
< variable name = " REVERSED_CLIENT_ID " value = " myreversedclientid " />
< variable name = " WEB_APPLICATION_CLIENT_ID " value = " mywebapplicationclientid " />
plugin >
للحصول على أحدث إصدار من Git (غير مستحسن):
< plugin spec = " https://github.com/EddyVerbruggen/cordova-plugin-googleplus.git " source = " git " >
< variable name = " REVERSED_CLIENT_ID " value = " myreversedclientid " />
< variable name = " WEB_APPLICATION_CLIENT_ID " value = " mywebapplicationclientid " />
< plugin >
يستخدم هذا المكون الإضافي مدير تبعيات CocoaPods من أجل تلبية تبعيات مكتبة iOS Google SignIn SDK.
لذا يرجى التأكد من تثبيت Cocoapods في بيئة بناء iOS لديك - يمكن العثور على تعليمات الإعداد هنا. تأكد أيضًا من تحديث مستودع Cocoapods المحلي الخاص بك عن طريق تشغيل pod repo update
.
إذا كنت تقوم ببناء مشروعك باستخدام Xcode، فستحتاج إلى فتح YourProject.xcworkspace
(وليس YourProject.xcodeproj
) حتى يتم تحميل كل من مشروع تطبيق Cordova ومشروع Pods في Xcode.
يمكنك إدراج تبعيات pod في مشروع Cordova iOS الخاص بك عن طريق تثبيت تبعيات Cocopods:
sudo gem install cocoapods-dependencies
cd platforms/ios/
pod dependencies
تحقق من التطبيق التجريبي لمساعدتك على المضي قدمًا بسرعة، أو إيذاء نفسك واتبع هذه الخطوات.
لاحظ أنه لا ينبغي استدعاء أي من هذه التوابع قبل تشغيل deviceready
.
مثال:
document . addEventListener ( 'deviceready' , deviceReady , false ) ;
function deviceReady ( ) {
//I get called when everything's ready for the plugin to be called!
console . log ( 'Device is ready!' ) ;
window . plugins . googleplus . trySilentLogin ( ... ) ;
}
31/3/16: لم تعد هذه الطريقة مطلوبة للتحقق أولاً. يتم الاحتفاظ به من أجل تعامد الكود.
تعمل وظيفة تسجيل الدخول على توجيه المستخدم خلال عملية Google Auth. جميع المعلمات اختيارية، ولكن هناك بعض التحذيرات.
للحصول على idToken
على Android، يجب عليك تمرير webClientId
الخاص بك (من الأخطاء الشائعة تقديم معرف عميل Android). على نظام التشغيل iOS، يتم تضمين idToken
في نتيجة تسجيل الدخول بشكل افتراضي.
للحصول على serverAuthCode
، يجب عليك إدخال webClientId
الخاص بك وتعيين وضع offline
على true. إذا كانت قيمة وضع عدم الاتصال بالإنترنت صحيحة، ولكن لم يتم توفير webClientId، فلن يتم طلب serverAuthCode
.
النطاقات الافتراضية المطلوبة هي profile
email
(مطلوب دائمًا). لطلب نطاقات أخرى، قم بإضافتها كقائمة مفصولة بمسافات إلى معلمة scopes
. سيتم طلبها تمامًا كما تم إدخالها. راجع وثائق نطاقات Google للحصول على معلومات حول النطاقات الصالحة التي يمكن طلبها. على سبيل المثال، 'scope': 'https://www.googleapis.com/auth/youtube https://www.googleapis.com/auth/tasks'
.
وبطبيعة الحال، من أجل استخدام أي نطاقات أو واجهات برمجة تطبيقات إضافية، يجب تنشيطها في وحدة تحكم مطور مشروعك.
window . plugins . googleplus . login (
{
'scopes' : '... ' , // optional, space-separated list of scopes, If not included or empty, defaults to `profile` and `email`.
'webClientId' : 'client id of the web app/server side' , // optional clientId of your Web application from Credentials settings of your project - On Android, this MUST be included to get an idToken. On iOS, it is not required.
'offline' : true // optional, but requires the webClientId - if set to true the plugin will also return a serverAuthCode, which can be used to grant offline access to a non-Google server
} ,
function ( obj ) {
alert ( JSON . stringify ( obj ) ) ; // do something useful instead of alerting
} ,
function ( msg ) {
alert ( 'error: ' + msg ) ;
}
) ;
يحصل رد الاتصال Success (الوسيطة الثانية) على كائن JSON بالمحتويات التالية، مع بيانات نموذجية لحساب Google الخاص بي:
obj . email // '[email protected]'
obj . userId // user id
obj . displayName // 'Eddy Verbruggen'
obj . familyName // 'Verbruggen'
obj . givenName // 'Eddy'
obj . imageUrl // 'http://link-to-my-profilepic.google.com'
obj . idToken // idToken that can be exchanged to verify user identity.
obj . serverAuthCode // Auth code that can be exchanged for an access token and refresh token for offline access
obj . accessToken // OAuth2 access token
تتوفر معلومات إضافية للمستخدم حسب حالة الاستخدام. أضف النطاقات المطلوبة إلى خيار النطاقات ثم قم بإرجاع المعلومات إلى كائن النتيجة الذي يتم إنشاؤه في وظائف handleSignInResult
و didSignInForUser
على Android وiOS، على التوالي.
على Android، يتلقى رد اتصال الخطأ (الوسيطة الثالثة) رمز حالة الخطأ إذا لم تكن المصادقة ناجحة. يمكن العثور على وصف لرموز الحالة هذه على موقع مطور Android الخاص بشركة Google على GoogleSignInStatusCodes.
على نظام التشغيل iOS، سيتضمن رد اتصال الخطأ NSError localizedDescription.
يمكنك الاتصال بـ trySilentLogin
للتحقق مما إذا كانوا قد قاموا بتسجيل الدخول بالفعل إلى التطبيق وتسجيل دخولهم بصمت إذا كانوا كذلك.
إذا نجحت، فستحصل على نفس الكائن الذي تحصل عليه وظيفة login
، ولكن إذا فشلت فلن يظهر مربع حوار المصادقة للمستخدم.
يتم إجراء استدعاء trySilentLogin
بنفس login
، باستثناء اسم الوظيفة.
window . plugins . googleplus . trySilentLogin (
{
'scopes' : '... ' , // optional - space-separated list of scopes, If not included or empty, defaults to `profile` and `email`.
'webClientId' : 'client id of the web app/server side' , // optional - clientId of your Web application from Credentials settings of your project - On Android, this MUST be included to get an idToken. On iOS, it is not required.
'offline' : true , // Optional, but requires the webClientId - if set to true the plugin will also return a serverAuthCode, which can be used to grant offline access to a non-Google server
} ,
function ( obj ) {
alert ( JSON . stringify ( obj ) ) ; // do something useful instead of alerting
} ,
function ( msg ) {
alert ( 'error: ' + msg ) ;
}
) ;
يوصى بشدة أن يتم تنفيذ TrySilentLogin بنفس خيارات تسجيل الدخول، لتجنب أي تعقيدات محتملة.
سيؤدي هذا إلى مسح رمز OAuth2.
window . plugins . googleplus . logout (
function ( msg ) {
alert ( msg ) ; // do something useful instead of alerting
}
) ;
سيؤدي هذا إلى مسح رمز OAuth2، ونسيان الحساب الذي تم استخدامه لتسجيل الدخول، وفصل هذا الحساب عن التطبيق. سيتطلب هذا من المستخدم السماح للتطبيق بالوصول مرة أخرى في المرة التالية التي يقوم فيها بتسجيل الدخول. كن على علم بأن هذا التأثير ليس دائمًا فوريًا. قد يستغرق الأمر وقتًا لقطع الاتصال تمامًا.
window . plugins . googleplus . disconnect (
function ( msg ) {
alert ( msg ) ; // do something useful instead of alerting
}
) ;
idToken
وثائق جوجل للمصادقة مع خادم الواجهة الخلفية
كما ذكرت المقالات أعلاه، يمكن استبدال idToken
بمعلومات المستخدم لتأكيد هوية المستخدم.
ملاحظة: لا تريد Google إرسال بيانات هوية المستخدم مباشرة إلى الخادم. إن idToken هو الطريقة المفضلة لديهم لإرسال تلك البيانات بشكل آمن، حيث يجب التحقق منها من خلال خوادمهم من أجل فك الضغط.
هذا له عدة استخدامات. من ناحية العميل، يمكن أن تكون هذه طريقة لتأكيد هوية المستخدم بشكل مضاعف، أو يمكن استخدامها للحصول على تفاصيل مثل مجال مضيف البريد الإلكتروني. جانب الخادم هو المكان الذي يحقق فيه idToken
خطواته حقًا. إنها طريقة سهلة لتأكيد هوية المستخدمين قبل السماح لهم بالوصول إلى موارد تلك الخوادم أو قبل استبدال serverAuthCode
برمز وصول وتحديث مميز (راجع القسم التالي).
إذا كان جانب الخادم الخاص بك يحتاج فقط إلى الهوية، وليس الوصول الإضافي إلى الحساب، فهذه طريقة آمنة وبسيطة لتوفير تلك المعلومات.
serverAuthCode
وثائق جوجل لتمكين الوصول من جانب الخادم
كما ذكرت المقالات أعلاه، فإن serverAuthCode
هو عنصر يمكن استبداله برمز وصول وتحديث مميز. على عكس idToken
، يسمح هذا لجانب الخادم بالوصول المباشر إلى حساب Google الخاص بالمستخدم.
سيتم إرجاع serverAuthCode
فقط في طلب تسجيل الدخول الأولي. إذا كنت ترغب في الحصول على الرمز المميز مرة ثانية، فيمكنك ذلك باستخدام تسجيل الخروج أولاً.
لديك خياران عندما يتعلق الأمر بهذا التبادل: يمكنك استخدام Google REST Apis للحصول على تلك الموجودة في التطبيق المختلط نفسه أو يمكنك إرسال الرمز إلى خادم الواجهة الخلفية الخاص بك ليتم تبادله هناك، باستخدام أي طريقة ضرورية (توفر Google أمثلة لـ Java وPython وJS/HTTP).
كما ذكرنا سابقًا، يدور هذا البرنامج الإضافي حول مصادقة المستخدم وهويته، لذا فإن أي استخدام لحساب المستخدم يتجاوز ذلك يجب تنفيذه لكل حالة استخدام ولكل تطبيق.
س: لا يمكنني الحصول على المصادقة للعمل على Android. ولماذا لا يوجد ANDROID API KEY؟
ج: على نظام Android، تحتاج إلى تنفيذ خطوات keytool
، راجع تعليمات التثبيت للحصول على التفاصيل.
س: بعد اتباع خطوات keytool
، ما زلت لا أستطيع الحصول على المصادقة للعمل على Android. أواجه "خطأ 10"!!!
ج: أنت بحاجة إلى الحصول على شهادة SHA 1 من ملف APK الخاص بك. قم بتشغيل: keytool -list -printcert -jarfile
وانسخ SHA 1 إلى معرف عميل Android الخاص بك على Google Console.
س: يا إلهي $@#*! فشل بناء Android
ج: يجب أن يكون لديك مستودع دعم Android ومكتبة دعم Android مثبتين في مدير Android SDK. تأكد من أنك تستخدم إصدارًا محدثًا إلى حد ما من تلك الإصدارات.
س: لماذا لا يعمل هذا على محاكي Android الخاص بي؟؟؟
ج: تأكد من أنك تستخدم جهازًا افتراضيًا يعمل مع هدف Google APIs و/أو وحدة المعالجة المركزية لـ Google APIs !
س: يظهر لي الخطأ 10 ، ماذا أفعل؟
ج: من المحتمل أن يكون السبب في ذلك هو عدم استخدام كوردوفا لمخزن المفاتيح الذي تريد استخدامه (على سبيل المثال لأنك قمت بإنشاء ملف خاص بك). يرجى مراجعة https://cordova.apache.org/docs/en/latest/guide/platforms/android/#signing-an-app لقراءة كيفية القيام بذلك. أبلغ البعض أنك بحاجة إلى تشغيل cordova clean
قبل تشغيل الإصدار لحل الخطأ 10.
س: يظهر لي الخطأ 16 ، ماذا أفعل؟
ج: هذه مشكلة دائمًا لأن التوقيع (أو بصمة الإصبع) لتطبيق Android الخاص بك عند التوقيع لا تتم إضافته إلى القائمة البيضاء لـ OAuth لوحدة تحكم Google (أو firebase). يرجى التحقق مرة أخرى مما إذا كنت قد فعلت كل ما هو مطلوب لهذا الغرض. انظر الدليل المصغر أدناه.
أولاً، تأكد من قراءة وفهم الدليل الخاص بتوقيع التطبيق بالكامل من وثائق android!
بعد/أثناء قراءة ذلك، تحقق مرة أخرى مما إذا كنت قد قمت بجميع الخطوات من 1 إلى 4 أدناه بشكل صحيح:
من أجل تسجيل تطبيقك (على التطوير أو النشر)، ستحتاج إلى إنشاء مخزن مفاتيح محلي ومفتاح باستخدام Android Studio أو عبر الوحدة الطرفية. لدى Google ميزة تسمى "توقيع تطبيق Google Play" حيث سيحتفظون بالمفتاح على الخادم الخاص بهم ويوقعون تطبيقك نيابةً عنك، ولكن إذا كنت تستخدم هذه الميزة أم لا، فستحتاج إلى مخزن مفاتيح محلي ومفتاح في كلتا الحالتين.
سيكون مفتاحك ومفتاحك المحلي بمثابة مفتاح توقيع التطبيق الرسمي.
ستحتاج إلى إدراج بصمات المفاتيح التالية في القائمة البيضاء (بتنسيق SHA1) في إعدادات Google OAuth:
debug.keystore
الافتراضي لنظام Androidسيكون مفتاحك ومخزن المفاتيح المحلي الخاص بك هو "مفتاح التحميل" الخاص بك، ويتم إنشاء مفتاح آخر لـ "مفتاح توقيع التطبيق" الرسمي وإدارته بواسطة Google.
تحتاج إلى إدراج بصمات المفاتيح التالية في القائمة البيضاء (بتنسيق SHA1) في إعدادات Google Oauth:
debug.keystore
الافتراضي لنظام Androidاحصل على بصمات المفاتيح المذكورة أعلاه (بتنسيق SHA1) لتتمكن من إدراجها في القائمة البيضاء.
بالنسبة إلى debug.keystore
الافتراضي لنظام Android، قم بما يلي:
keytool -exportcert -keystore /Users/myusername/.android/debug.keystore -list -v
سترى بصمة SHA1 لمفتاح التصحيح في الجهاز. انسخ ذلك.
بالنسبة لمخزن المفاتيح الذي تم إنشاؤه باستخدام المفتاح (إما لـ 2A أو 2B)، قم بما يلي:
keytool -exportcert -keystore /path/to/your/key/yourKeystoreFile.keystore -list -v
سترى بصمة SHA1 لمفتاح التصحيح في الجهاز. انسخ ذلك.
فقط عند تمكين توقيع تطبيق Google Play (لـ 2B). يمكنك العثور على المفتاح الذي ستستخدمه Google لتوقيع تصميماتك في Google Play Console.
المتطلبات: يجب أن تكون قد أنهيت المعلومات الأساسية على تطبيق Android الخاص بك، ثم تحتاج إلى تحميل ملف APK موقّع للاختبار الداخلي. بمجرد تحميل هذا، ستتمكن من الوصول إلى القائمة التالية:
انتقل إلى إدارة الإصدار > تسجيل التطبيق. هناك سترى
"التحميل" هو (ويجب أن يكون) نفس المفتاح B. أعلاه. و"شهادة توقيع التطبيق" هي المفتاح الذي ستستخدمه Google. انسخ هذا.
مرة أخرى لدينا خياران لإدراجهما في القائمة البيضاء. المشاريع التي تستخدم Google Cloud Platform فقط أو المشاريع التي تستخدم Firebase .
(في حالة استخدام Firebase أيضًا، يمكنك تخطي هذه الخطوة)