我正在使用Google Chrome扩展程序,我想使用Google的客户端API https://apis.google.com/js/client.js来检索用户的Google+ ID。
我在manifest.json中提供了以下值:
"oauth2": {
"client_id": "[CLIENT ID].apps.googleusercontent.com",
"scopes": [
"https://www.googleapis.com/auth/plus.login",
"https://www.googleapis.com/auth/plus.me"
]
}
提供这些值可让我成功调用chrome.identity.getAuthToken:http://developer.chrome.com/apps/identity.html
getAuthToken: function () {
chrome.identity.getAuthToken({
interactive: false
}, function (authToken) {
if (chrome.runtime.lastError) {
// User isn't signed into Google Chrome.
console.error(chrome.runtime.lastError.message);
}
});
}
一旦我有一个身份验证令牌,我就能发出一个AJAX请求并成功获取我的信息:
$.ajax({
url: 'https://www.googleapis.com/plus/v1/people/me',
headers: {
'Authorization': 'Bearer ' + authToken
},
success: function (response) {
console.log("Received user info", response);
},
error: function (error) {
console.error(error);
}
});
但这些都不使用上述的Google客户端API。相反,利用它会很好,但我想知道它是否不适用于谷歌Chrome扩展。我能够至少让事情像这样工作:
GoogleAPI.auth.authorize({
client_id: '[CLIENT ID].apps.googleusercontent.com',
scope: 'https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.me',
// Set immediate to false if authResult returns null
immediate: true
}, function(){
GoogleAPI.client.load('plus', 'v1', function () {
var request = GoogleAPI.client.plus.people.get({
'userId': 'me'
});
request.execute(function (response) {
console.log("Response:", response);
});
});
但是我已经在我的清单中指定了这些值 - 所以重新引用它们似乎有点奇怪。我可以加载我的清单并解析它,但我已经在上面成功地工作了。
此外,您必须调用GoogleAPI.client.setApiKey才能使用Google的内容。这适用于开发环境,因为我能够将机器的IP列入白名单,但这在生产环境中不起作用,因为会有许多客户端连接。
那么,Google的客户端API是否应该在Google Chrome扩展程序中使用?