OAuth2 は、業界標準の承認プロトコルです。これによりユーザーは ユーザー名を共有することなく、ウェブ アプリケーションやデスクトップ アプリケーションに個人情報へのアクセスを許可する。 認証情報を取得できます。
このチュートリアルでは、Google People アプリと API と Chrome Identity API。拡張機能は HTTPS 経由では読み込めないため、 Cookie の設定にかかわらず、OAuth2 の使用には Chrome Identity API が使用されます。
始める
まず、ディレクトリと次のスターター ファイルを作成します。
完成した拡張機能はこちらからダウンロードできます。
manifest.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": 2,
"browser_action": {
"default_title": "FriendBlock, friends face's in a block."
},
"background": {
"scripts": [
"background.js"
],
"persistent": false
}
}
background.js
background.js
というファイルを作成し、次のコードを記述して、バックグラウンド スクリプトを追加します。
または、こちらからファイルをダウンロードしてください。
chrome.browserAction.onClicked.addListener(function() {
chrome.tabs.create({url: 'index.html'});
});
index.html
index.html
という 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
ダッシュボードをご覧ください。
- デベロッパー ダッシュボードで [新しい項目を追加] をクリックします。
- [Choose file] をクリックし、
.zip
拡張機能ディレクトリを選択してアップロードします。 - その他の欄に入力しない場合は、[下書きを保存してダッシュボードに戻る] を選択します。
[リスティング] で拡張機能を見つけて、[詳細] をクリックします。ポップアップで
解凍したディレクトリの "key"
フィールドの下でマニフェストに追加します。
{
"name": "OAuth Tutorial FaceBlcok",
...
"key": "ThisKeyIsGoingToBeVeryLong/go8G...AQAB"
}
ID を比較
chrome://extensions
で拡張機能の管理ページを開き、デベロッパー モードが有効になっていることを確認します。
パッケージ化されていない拡張機能のディレクトリをアップロードします。拡張機能の管理ページで拡張機能 ID を比較する
をデベロッパー ダッシュボードのアイテム ID に変更します。両者は一致するはずです。
マニフェストに "key"
フィールドを含めることで、拡張機能は同じ ID を維持します。予測値を保持する
API の登録には単一の ID が不可欠です。
OAuth クライアント ID の作成
Google API Console に移動して、新しいプロジェクトを作成します。準備ができたら [認証情報] のサイドバーで [認証情報を作成] をクリックし、[OAuth クライアント ID] を選択します。
[クライアント ID の作成] ページで [Chrome アプリ] を選択します。広告表示オプションの名前と場所を入力します 拡張機能 ID は、[Application ID] フィールドの URL の末尾で確認できます。
最後に [作成] をクリックします。コンソールに OAuth クライアント ID が表示されます。
マニフェストに OAuth を登録する
拡張機能のマニフェストに "oauth2"
フィールドを含めます。生成された OAuth クライアント ID を
"client_id"
。ここでは、"scopes"
に空の文字列を含めます。
{
"name": "OAuth Tutorial FriendBlock",
...
"oauth2": {
"client_id": "yourExtensionOAuthClientIDWillGoHere.apps.googleusercontent.com",
"scopes":[""]
},
...
}
最初の OAuth フローを開始する
マニフェストに identity
権限を登録します。
{
"name": "OAuth Tutorial FaceBlcok",
...
"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 Contacts」をクリックします] ボタンを離します。コンソールに OAuth トークンが表示されます。
Google People API を有効にする
Google API コンソールに戻り、サイドバーから [Library] を選択します。「Google ユーザー」を検索する 正しい結果をクリックして有効にしてください。
拡張機能のマニフェストの "scopes"
に Google People API クライアント ライブラリを追加します。
{
"name": "OAuth Tutorial FaceBlcok",
...
"oauth2": {
"client_id": "yourExtensionOAuthClientIDWillGoHere.apps.googleusercontent.com",
"scopes": [
"https://www.googleapis.com/auth/contacts.readonly"
]
},
...
}
Google API Console に戻り、認証情報に戻ります。[認証情報を作成] をクリックしますおよび [API キー] を選択選択します
生成された API キーは、後で使用できるように保存しておきます。
最初の API リクエストを作成する
拡張機能に適切な権限と認証情報が設定され、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 Console で生成された API キーに置き換えます。拡張機能
people/account_id
の配列を含む JSON オブジェクトを
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);
});
};
});
});
});
};
拡張機能を再読み込みして戻ります。[フレンドブロック] ボタンをクリックすれば、連絡先の顔を認識する ブロックします。