OAuth2 هو البروتوكول المتّبع في المجال للتفويض. يوفر آلية للمستخدمين لمنح تطبيقات الويب وسطح المكتب الوصول إلى المعلومات الخاصة بدون مشاركة اسم المستخدم الخاص بها، وكلمة المرور وبيانات الاعتماد الخاصة الأخرى.
ينشئ هذا البرنامج التعليمي إضافة يمكنها الوصول إلى جهات اتصال Google لدى المستخدم باستخدام الخيار Google people واجهة برمجة التطبيقات وChrome Identity API. لأنه لا يتم تحميل الإضافات يتعذّر تنفيذ بروتوكول HTTPS تعيد التوجيه أو تُعيِّن ملفات تعريف الارتباط، فإنها تعتمد على واجهة برمجة تطبيقات Chrome Identity API لاستخدام OAuth2.
البدء
ابدأ بإنشاء دليل وملفات البدء التالية.
ملف البيان.json
يمكنك إضافة البيان عن طريق إنشاء ملف باسم manifest.json
وتضمين الرمز التالي.
{
"name": "OAuth Tutorial FriendBlock",
"version": "1.0",
"description": "Uses OAuth to connect to Google's People API and display contacts photos.",
"manifest_version": 3,
"action": {
"default_title": "FriendBlock, friends face's in a block."
},
"background": {
"service_worker": "service-worker.js"
}
}
service-worker.js
أضِف مشغّل خدمات الإضافات من خلال إنشاء ملف باسم service-worker.js
وتضمين الرمز التالي.
chrome.action.onClicked.addListener(function() {
chrome.tabs.create({url: 'index.html'});
});
index.html
أضِف ملف HTML باسم index.html
وأدرِج الرمز التالي.
<html>
<head>
<title>FriendBlock</title>
<style>
button {
padding: 10px;
background-color: #3C79F8;
display: inline-block;
}
</style>
</head>
<body>
<button>FriendBlock Contacts</button>
<div id="friendDiv"></div>
</body>
</html>
الاحتفاظ بمعرّف إضافة ثابت
من الضروري الاحتفاظ بمعرّف واحد خلال مرحلة التطوير. للاحتفاظ بمعرّف ثابت، اتبع الخطوات التالية:
تحميل الإضافة إلى لوحة بيانات المطوّر
ضَع دليل الإضافات في ملف .zip
وحمِّله إلى Chrome Developer
لوحة البيانات بدون نشرها:
- في "لوحة بيانات المطوّر"، انقر على إضافة عنصر جديد.
- انقر على تصفّح الملفات واختَر ملف ZIP للإضافة وحمِّله.
- انتقِل إلى علامة التبويب الحزمة وانقر على عرض المفتاح العام.
عند فتح النافذة المنبثقة، اتّبِع الخطوات التالية:
- انسخ الرمز بين
-----BEGIN PUBLIC KEY-----
و-----END PUBLIC KEY-----
. - أزِل السطور الجديدة لجعلها سطرًا واحدًا من النص.
أضِف الرمز إلى manifest.json
ضمن الحقل "key"
.
وبهذه الطريقة، ستستخدم الإضافة المعرّف نفسه.
{ // manifest.json
"manifest_version": 3,
...
"key": "ThisKeyIsGoingToBeVeryLong/go8GGC2u3UD9WI3MkmBgyiDPP2OreImEQhPvwpliioUMJmERZK3zPAx72z8MDvGp7Fx7ZlzuZpL4yyp4zXBI+MUhFGoqEh32oYnm4qkS4JpjWva5Ktn4YpAWxd4pSCVs8I4MZms20+yx5OlnlmWQEwQiiIwPPwG1e1jRw0Ak5duPpE3uysVGZXkGhC5FyOFM+oVXwc1kMqrrKnQiMJ3lgh59LjkX4z1cDNX3MomyUMJ+I+DaWC2VdHggB74BNANSd+zkPQeNKg3o7FetlDJya1bk8ofdNBARxHFMBtMXu/ONfCT3Q2kCY9gZDRktmNRiHG/1cXhkIcN1RWrbsCkwIDAQAB",
}
مقارنة أرقام التعريف
افتح صفحة "إدارة الإضافات" على الرابط chrome://extensions
، وتأكّد من تفعيل وضع مطوّر البرامج.
وحمّل دليل الإضافات غير المُجمع. مقارنة رقم تعريف الإضافة في إدارة الإضافات
معرّف السلعة في لوحة بيانات المطوّر. يجب أن يتطابقا.
إنشاء معرِّف عميل OAuth
انتقِل إلى وحدة تحكُّم واجهة برمجة تطبيقات Google وأنشِئ مشروعًا جديدًا. بعد الانتهاء، اختَر بيانات الاعتماد في الشريط الجانبي، انقر على إنشاء بيانات الاعتماد واختَر معرِّف عميل OAuth.
في صفحة "إنشاء معرِّف العميل"، اختَر إضافة Chrome. املأ اسم الإضافة والمكان معرّف الإضافة في نهاية عنوان URL في حقل معرّف التطبيق.
الإنهاء من خلال النقر على إنشاء. ستوفّر وحدة التحكّم معرِّف عميل OAuth.
تسجيل OAuth في البيان
ضمِّن الحقل "oauth2"
في بيان الإضافة. وضع معرّف عميل OAuth الذي تم إنشاؤه ضمن
"client_id"
يُرجى تضمين سلسلة فارغة في "scopes"
في الوقت الحالي.
{
"name": "OAuth Tutorial FriendBlock",
...
"oauth2": {
"client_id": "yourExtensionOAuthClientIDWillGoHere.apps.googleusercontent.com",
"scopes":[""]
},
...
}
بدء مسار OAuth الأول
سجِّل إذن identity
في ملف البيان.
{
"name": "OAuth Tutorial FriendBlock",
...
"permissions": [
"identity"
],
...
}
أنشِئ ملفًا لإدارة مسار OAuth المسمى oauth.js
وأدرِج الرمز التالي.
window.onload = function() {
document.querySelector('button').addEventListener('click', function() {
chrome.identity.getAuthToken({interactive: true}, function(token) {
console.log(token);
});
});
};
ضَع علامة نص برمجي لـ oauth.js
في رأس index.html
.
...
<head>
<title>FriendBlock</title>
...
<script type="text/javascript" src="oauth.js"></script>
</head>
...
أعِد تحميل الإضافة وانقر على رمز المتصفّح لفتح index.html
. افتح وحدة التحكم وانقر على "جهات اتصال FriendBlock" . سيظهر رمز OAuth مميز في وحدة التحكم.
تفعيل Google People API
ارجع إلى وحدة تحكّم Google API واختَر المكتبة من الشريط الجانبي. البحث عن "أشخاص في Google API"، انقر على النتيجة الصحيحة وفعِّلها.
أضِف مكتبة برامج Google People API إلى "scopes"
في بيان الإضافة.
{
"name": "OAuth Tutorial FriendBlock",
...
"oauth2": {
"client_id": "yourExtensionOAuthClientIDWillGoHere.apps.googleusercontent.com",
"scopes": [
"https://www.googleapis.com/auth/contacts.readonly"
]
},
...
}
ارجع إلى وحدة تحكم واجهة برمجة تطبيقات Google وارجع إلى بيانات الاعتماد. انقر على "إنشاء بيانات اعتماد" أو حدد "مفتاح واجهة برمجة التطبيقات" من القائمة المنسدلة.
ويمكنك الاحتفاظ بمفتاح واجهة برمجة التطبيقات الذي تم إنشاؤه لاستخدامه لاحقًا.
إنشاء أول طلب من واجهة برمجة التطبيقات
والآن بعد أن حصلت الإضافة على الأذونات وبيانات الاعتماد المناسبة وأصبح بإمكانها تفويض أحد مستخدمي Google،
طلب البيانات من خلال واجهة برمجة تطبيقات "الأشخاص". يُرجى تعديل الرمز في "oauth.js
" ليتطابق مع الرمز أدناه.
window.onload = function() {
document.querySelector('button').addEventListener('click', function() {
chrome.identity.getAuthToken({interactive: true}, function(token) {
let init = {
method: 'GET',
async: true,
headers: {
Authorization: 'Bearer ' + token,
'Content-Type': 'application/json'
},
'contentType': 'json'
};
fetch(
'https://people.googleapis.com/v1/contactGroups/all?maxMembers=20&key=API_KEY',
init)
.then((response) => response.json())
.then(function(data) {
console.log(data)
});
});
});
};
استبدِل API_KEY بمفتاح واجهة برمجة التطبيقات الذي تم إنشاؤه من وحدة تحكّم Google API. الإضافة
يجب تسجيل كائن JSON يتضمّن مصفوفة من people/account_id
ضمن
حقل memberResourceNames
.
حظر الوجوه
الآن بعد أن عرضت الإضافة قائمة بجهات اتصال المستخدم، يمكنها تقديم طلبات إضافية
لاسترداد الملفات الشخصية والمعلومات الخاصة بجهة الاتصال تلك ستستخدم الإضافة دالة
memberResourceNames
لاسترداد معلومات الصورة لجهات اتصال المستخدم. تحديث oauth.js
إلى
فقم بتضمين التعليمة البرمجية التالية.
window.onload = function() {
document.querySelector('button').addEventListener('click', function() {
chrome.identity.getAuthToken({interactive: true}, function(token) {
let init = {
method: 'GET',
async: true,
headers: {
Authorization: 'Bearer ' + token,
'Content-Type': 'application/json'
},
'contentType': 'json'
};
fetch(
'https://people.googleapis.com/v1/contactGroups/all?maxMembers=20&key=<API_Key_Here>',
init)
.then((response) => response.json())
.then(function(data) {
let photoDiv = document.querySelector('#friendDiv');
let returnedContacts = data.memberResourceNames;
for (let i = 0; i < returnedContacts.length; i++) {
fetch(
'https://people.googleapis.com/v1/' + returnedContacts[i] +
'?personFields=photos&key=API_KEY',
init)
.then((response) => response.json())
.then(function(data) {
let profileImg = document.createElement('img');
profileImg.src = data.photos[0].url;
photoDiv.appendChild(profileImg);
});
};
});
});
});
};
أعِد التحميل ثم ارجع إلى الإضافة. انقر فوق الزر FriendBlock وta-da! الاستمتاع بوجوه جهات الاتصال في قطعة.