Google Plus api 调用未经身份验证
Google Plus api calls not authenticated
我正在开发一个原型,其中包含两个简单的页面和谷歌加集成。我有两个页面,第一个带有"登录"按钮,第二个带有链接。当用户单击登录按钮时,我正在调用:
var params = {"client_id":"<client_id>", "scope":"https://www.googleapis.com/auth/plus.login"};
gapi.auth.authorize(params, signinCallback);
signinCallback
如下所示:
var signinCallback = function(authResult) {
if (authResult['access_token']) {
gapi.auth.setToken(authResult);
gapi.client.load('plus','v1', function(){
var request = gapi.client.plus.people.list({
'userId': 'me',
'collection': 'visible'
});
request.execute(function(resp) {
console.log(resp);
});
});
} else if (authResult['error']) {
console.error('Sign-in state: ' + authResult['error']);
}
}
因此,当用户单击按钮、登录并提供对应用的权限时,我将存储令牌并进行人员列表调用。这一切都很完美。
我的问题是当我导航到第二页并尝试拨打我之前拨打的相同电话时:
gapi.client.load('plus','v1', function(){
var request = gapi.client.plus.people.list({
'userId': 'me',
'collection': 'visible'
});
request.execute(function(resp) {
console.log(resp);
});
});
调用失败,并显示错误:Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.
我想当我在最初注册后进行"setToken"时,我不必继续验证每个后续调用,我做错了什么?
如果这些确实是两个不同的页面(而不是一个页面对服务器进行了一些 AJAX 或其他调用以获取其他数据),那么每个页面都有一个完全不同的 JavaScript 环境。这意味着gapi
对象是每个页面上的不同副本,并且您在第一页上设置的身份验证尚未在第二页上的gapi
对象上设置。您不是在为会话设置令牌 - 而是在特定 JavaScript 对象上设置令牌。
如果您使用的是Google+登录之类的内容,则可以将按钮放在每个页面上,当用户访问每个页面时,每个页面都会获得自己的令牌,但这有些效率低下,因为这也意味着每次往返服务器。
您可能还可以执行诸如将身份验证令牌放入临时/会话本地存储之类的操作,但在这种情况下应小心,以免令牌泄漏并导致安全问题。
还有其他潜在的解决方案,但它实际上归结为您打算如何使用经过身份验证的用户作为客户端的一部分。
相关文章:
- Passport.js成功的身份验证根本没有调用
- 使用 feathersjs 通过简单的 rest 调用进行身份验证
- 如何使用 Javascript 对 SharePoint REST 调用进行身份验证
- 保留 Azure 移动服务的自定义 API 调用的用户身份验证
- 不调用的 Passportjs 是身份验证
- Google Plus api 调用未经身份验证
- 如何使用基本身份验证从 angularjs 调用 rest 服务
- Azure Table Storage 通过 javascript 对 REST 调用进行身份验证
- 护照.js身份验证成功,未调用 next()
- 如何使用 JavaScript 调用 HTTPS 身份验证
- 使用HTTP基本身份验证的JQuery Ajax调用
- 对passportjs+Node.js+Express.js Rest API调用成功身份验证和失败的路由处理程序
- 身份验证-$http'调用了s.then()成功回调,而不是错误回调
- 推送器:“;未捕获的类型错误:无法调用方法'scopedTo'未定义的“;进行身份验证时
- 在MVC控制器和JavaScript Ajax调用之间需要身份验证
- 使用activedirectory身份验证在JavaScript中调用Azure API应用程序
- 在调用REST端点之前进行身份验证
- 对服务帐户进行身份验证,以便使用JavaScript客户端库调用Google API
- 为使用Azure Active Directory身份验证保护的Web API的AJAX调用添加身份验证令牌
- 对Twitter API进行身份验证调用,以避免速率限制