oauth Chrome 扩展 Google App Engine

Posted

技术标签:

【中文标题】oauth Chrome 扩展 Google App Engine【英文标题】:oauth Chrome Extension Google App Engine 【发布时间】:2013-11-02 10:32:19 【问题描述】:

有没有人幸运地让 Google Chrome 扩展程序和 Google App 引擎之间的 OAuth 运行良好(或者其他任何事情?)。我已经完成了所有步骤。我已经完成了这个Google Dev tutorial 中的步骤,不管我在握手过程结束时被重定向到about:blank

我的扩展中有这段代码(参见教程中的内容):

var baseurl = 'https://my-app.appspot.com';
var oauth = ChromeExOAuth.initBackgroundPage(
    'request_url' : baseUrl + '/_ah/OAuthGetRequestToken',
    'authorize_url' : baseUrl + '/_ah/OAuthAuthorizeToken',
    'access_url' : baseUrl + '/_ah/OAuthGetAccessToken',
    'consumer_key' : 'anonymous',
    'consumer_secret' : 'anonymous',
    'scope' : baseUrl,
    'app_name' : 'MyApp'
);

...但我认为这不是问题,因为我注意到当我使用教程的 oAuth 参数时会发生类似的问题 - 我被重定向到一个页面,询问我是否要授予对 Google Drive 的访问权限并单击“授予访问权限'我被发送到 about:blank 并且似乎没有 OAuth 令牌。

非常感谢任何想法。


更新也许我在回答我自己的问题 - 不确定。 我还在使用 ChromeToPhone 扩展的源代码——我的代码基于 OAuth 谷歌应用引擎方面的东西。我尝试从源代码安装此扩展程序并得到about:blank 同样的问题。然后我去了扩展应用商店上的这个扩展,同样的事情也发生了。那么也许我的 Chrome(版本 31.0.1650.26 beta-m)坏了?其他人是否会发生这种情况,或者我的 Chrome 安装是否以某种方式损坏?

【问题讨论】:

【参考方案1】:

说明

web_accessible_resources 清单属性 here 的 Chrome 扩展文档提到:

除非资源被列为网络可访问,否则从网络源到扩展资源的导航将被阻止。

然后再降低:

使用manifest_version 2 或更高版本的包内的资源默认被阻止,并且必须通过此属性将其列入白名单。

显然最后一部分是作为 Chrome 31 版本的一部分添加的。

解决方案

解决方案是在您的扩展清单中将 web_accessible_resources 设置为包含您的 OAuth 握手完成 URL 的数组,如下所示:


    "web_accessible_resources": [
         "oauth2/oauth2.html"
    ]

来源

https://code.google.com/p/chromium/issues/detail?id=310870#c4

http://developer.chrome.com/extensions/manifest/web_accessible_resources.html#web_accessible_resources

【讨论】:

这对我有用(对确切的文件名进行了一些更改)。 很高兴我能帮上忙!当您使用 Boris Smus 的 OAuth2.js 时,文件名适用,因为我认为这是 Chrome 扩展中最常见的 OAuth 使用方法。【参考方案2】:

谷歌开发网站教程中的代码似乎适用于 chrome v30,但不适用于 v31。

如果尝试使用 WebStore 中的 chrometophone 应用程序会出现类似问题。

只能得出结论,Chrome 发生了一些变化,这意味着教程中提供的 oauth js 库不再工作 - 作为潜在问题 here 提出。走着瞧吧。

【讨论】:

以上是关于oauth Chrome 扩展 Google App Engine的主要内容,如果未能解决你的问题,请参考以下文章

在 Chrome 扩展程序中使用 Google 帐户进行服务器端身份验证

Google OAuth2:获取令牌 ID

GAPI 的 OAuth - 初始登录 Javascript 后避免身份验证和授权

如何使用 google-api-ruby-client People API 传递 OAuth 令牌?

Google禁止从第三方网站安装Chrome扩展程序

从脚本安装 Google Chrome 扩展