كيفية المصادقة على أي Google API

يمكن أن تكون وحدة تحكم Google Developers معقدة للحصول عليها بشكل صحيح ، وهذا أحد الأسباب التي تجعلني أواجه مقاومة أحيانًا لاستخدام إحدى واجهات برمجة تطبيقات Google. تهدف هذه المقالة إلى جعلها سهلة الاستخدام

توضح هذه المقالة كيفية استخدام Google Developers Console للمصادقة على أي من Google APIs.

يمكن أن تكون وحدة تحكم Developers Console معقدة في الوصول إليها بشكل صحيح ، وهذا أحد الأسباب التي تجعلني أواجه مقاومة في بعض الأحيان لاستخدام إحدى واجهات برمجة تطبيقات Google.

دعونا نرى كيف يعمل ذلك ، بطريقة بسيطة للغاية.

يفترض هذا الدليل أن لديك بالفعل حساب Google.

أنشئ مشروع Google API جديدًا

أنشئ مشروعًا جديدًا ، إذا لم تكن قد قمت به بعد.

The Google API Dashboard

من لوحة القيادة انقرأنشئ مشروعًا جديدًا.

Create a new API project

امنحه اسمًا ، وستتم إعادة توجيهك إلى لوحة تحكم المشروع:

The new project dashboard

أضف API بالنقر فوقتمكين واجهات برمجة التطبيقات والخدمات.

The API library

من القائمة ، ابحث في API الذي تهتم به

Choose an API

وتمكينه

Enable an API

هذا هو!

The API is enabled

المشروع جاهز الآن ، يمكنك المتابعة وإنشاء بيانات اعتماد المصادقة.

قم بإنشاء بيانات اعتماد المصادقة

هناك 3 طرق للمصادقة باستخدام Google APIs:

  • OAuth 2
  • خدمة للخدمة
  • مفتاح API

مفتاح واجهة برمجة التطبيقات أقل أمانًا ومقيدًا في النطاق والاستخدام من قبل Google.

يهدف OAuth 2 إلى السماح لتطبيقك بإجراء طلبات نيابة عن المستخدم ، وبالتالي تكون العملية أكثر تعقيدًا مما هو مطلوب ، وتتطلب عرض عناوين URL للتعامل مع عمليات الاسترجاعات. طريقة معقدة للغاية للاستخدامات البسيطة.

في نموذج مصادقة خدمة إلى خدمة ، يتحدث التطبيق مباشرة إلى Google API ، باستخدام حساب خدمة ، باستخدام JSON Web Token.

هذه هي أبسط طريقة ، خاصةً إذا كنت تبني نموذجًا أوليًا أو تطبيقًا يتحدث من خادمك (مثل تطبيق Node.js) إلى واجهات برمجة تطبيقات Google. هذه هي الطريقة الوحيدة التي سأتحدث عنها لاختبار المقالة.

خدمة API الخدمة

لاستخدام هذه الطريقة ، يجب أولاً إنشاء ملفملف مفتاح JSONمن خلال Google Developers Console.

هناك خيار آخر يتضمن تنزيل ملف.p12file ثم تحويله إلى ملفpemباستخدام ملفopensslيأمر. لم يعد موصى به من قبل Google ،فقط استخدم JSON.

من لوحة معلومات المشروع ، انقر فوقإنشاء بيانات الاعتماد، و اختارمفتاح حساب الخدمة:

Choose the type of credentials

املأ النموذج واختر نوع مفتاح "JSON":

Fill the form for credentials

هذا هو! أرسلت لك Google ملف JSON:

The JSON file was saved

هذا هو محتوى ملف JSON هذا ويسمىملف مفتاح JSON:

{
  "type": "service_account",
  "project_id": "...",
  "private_key_id": "...",
  "private_key": "...",
  "client_email": "...",
  "client_id": "...",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "..."
}

استخدام ملف مفتاح JSON

إن أبسط طريقة هي وضع ملف JSON في مكان ما يمكن الوصول إليه بواسطة برنامجك ، على نظام الملفات.

على سبيل المثال ، لدي تطبيق تجريبي تحت~/dev/test، لذلك وضعت ملف JSON في هذا المجلد ، وأعدت تسميته إلىauth.json. ثم داخل تطبيق Node.js ، تأكد من أن متغير بيئة GOOGLE_APPLICATION_CREDENTIALS يشير إلى موقع الملف هذا على نظام الملفات.

تقوم بإنشاء ملفJSON Web Tokenباستخدام الخصائص الواردة في الملف:

const jwt = new google.auth.JWT(key.client_email, null, key.private_key, scopes)

وتقوم بتمرير ذلك إلى أي طلب API تقدمه.

هذا مثال على كيفية استخدامه مع Google Analytics API.process.env.GOOGLE_APPLICATION_CREDENTIALSمن الأفضل وضعه خارج البرنامج ، لكني أضفته في المصدر للتوضيح:

'use strict'

const { google } = require(‘googleapis’)

const key = require(’./auth.json’) const scopes = https://www.googleapis.com/auth/analytics.readonly const jwt = new google.auth.JWT(key.client_email, null, key.private_key, scopes) const view_id = ‘XXXXXXX’

process.env.GOOGLE_APPLICATION_CREDENTIALS = ‘./auth.json’

jwt.authorize((err, response) => { google.analytics(‘v3’).data.ga.get( { auth: jwt, ids: ‘ga:’ + view_id, ‘start-date’: ‘30daysAgo’, ‘end-date’: ‘today’, metrics: ‘ga:pageviews’ }, (err, result) => { console.log(err, result) } ) })

استخدم متغيرات البيئة

هذا ليس مثاليًا في العديد من المواقف حيث يكون وجود معلوماتك الخاصة على نظام الملفات إما غير عملي أو غير آمن. على سبيل المثال ، إذا كنت تستخدم Heroku ، فمن الأفضل تجنب وضع بيانات اعتماد المصادقة في المستودع ، وبدلاً من ذلك قم بتعيينها من خلال الواجهة أو وحدة التحكم التي يوفرها Heroku.

أو أنها حالة استخدامها علىخللالنماذج الأولية ، حيث يتم إخفاء متغيرات البيئة عن الجميع باستثناء أنت.

في هذه الحالة ، أفضل شيء هو استخدام متغيرات البيئة ، وتخزين المحتوى الذي تريده من ملف JSON. في المثال التالي ، كل ما نحتاجه هو ملفclient_emailوprivate_keyيتم تعيين المتغيرات في JSON ، حتى نتمكن من استخراجها وتعيينها كمتغيرات بيئة ، للحفاظ على خصوصيتها.

'use strict'

const { google } = require(‘googleapis’)

const scopes = https://www.googleapis.com/auth/analytics.readonly const jwt = new google.auth.JWT( process.env.CLIENT_EMAIL, null, process.env.PRIVATE_KEY, scopes ) const view_id = ‘XXXXXXX’

jwt.authorize((err, response) => { google.analytics(‘v3’).data.ga.get( { auth: jwt, ids: ‘ga:’ + view_id, ‘start-date’: ‘30daysAgo’, ‘end-date’: ‘today’, metrics: ‘ga:pageviews’ }, (err, result) => { console.log(err, result) } ) })

الوصول إلى واجهات برمجة التطبيقات الأخرى

لقد استخدمت Google Analytics في الأمثلة.

الgoogleكائن يجعله قابلاً للوصول إليه فيgoogle.analytics('v3').

v3هي نسخة API.

يمكن الوصول إلى واجهات برمجة التطبيقات الأخرى باستخدام طريقة مماثلة:

  • google.urlshortener('v1')
  • google.drive('v2')

المزيد من دروس الخدمات: