0
我一直在挣扎了一段时间,现在使用谷歌的OAuth 2.0认证,以获取Google+的用户配置文件,我从InAppBrowser访问科尔多瓦。我已经能够从InAppBrowser获得响应代码。当我想使用响应代码获取授权令牌时发生问题,我想使用它来访问Google+ API。我不知道应该使用哪个URL来获取令牌,对于client_secret,我使用的是Google Developers控制台的凭据(Key for Android应用程序:API密钥)中提供的那个。科尔多瓦谷歌的OAuth 2.0 - 误差在获得令牌
下面是代码:
authorize: function(options) {
var deferred = $.Deferred();
var authUrl = 'https://accounts.google.com/o/oauth2/auth?' + $.param({
response_type: 'code',
client_id: options.client_id,
redirect_uri: options.redirect_uri,
scope: options.scope
});
var authWindow = cordova.InAppBrowser.open(authUrl, '_blank', 'location=no,toolbar=no');
$(authWindow).on('loadstart', function(e) {
var url = e.originalEvent.url;
var code = app.getParameterByName(url, 'code').trim();
var error = app.getParameterByName(url, 'error');
if (code || error) {
authWindow.close();
if (code) {
$.post('https://accounts.google.com/o/oauth2/token', {
code: code,
client_id: options.client_id,
client_secret: options.client_secret,
redirect_uri: options.redirect_uri,
grant_type: 'authorization_code'
}).done(function(data) {
deferred.resolve(data);
}).fail(function(response) {
console.log(JSON.stringify(response));
deferred.reject(response.responseJSON);
});
} else if (error) {
deferred.reject({error: error});
}
}
});
return deferred.promise();
}
该请求将总是被捕获为失败,与响应消息: { “readyState的”:0 “状态”:0 “状态文本”:“错误: SecurityError:DOM Exception 18“}
真的需要你的帮助。
谢谢
快速猜测,尝试卸载插件 “科尔多瓦 - 插件白名单”,然后添加“cordova-plugin-legacy-whitelist”。请不要这不是推荐的解决方案,但如果它解决了您的问题,这意味着您必须正确配置安全设置。你用什么版本的Android测试? – QuickFix
我使用安装了android v4.0.2的cordova v5.1.1。我刚刚尝试了您的建议,将旧白名单插件替换为白名单插件。不幸的是结果是一样的。答复仍然失败。因此,对于令牌网址,我应该使用https://www.googleapis.com/oauth2/v3/token访问吗?我也试过这个,但仍然失败。有没有我提出错误的请求的参数?响应错误消息也不够清楚,我不能在Google上搜索。任何其他建议? –
它是关于内容安全策略,如cordova v5.1.1使用cordova-plugin-whitelist,它指定: –