我有一个Ionic / Cordova应用程序。我使用$ cordovaOauth.google与谷歌联系。我只是获得了访问令牌。我把它发送到我的服务器端。
即使访问令牌无效,我也需要访问用户信息。我读到我需要使用Refresh Token。但我没有。
我可以从访问令牌获取刷新令牌吗?
答案 0 :(得分:0)
我正在尝试例如:hello.js,看起来很有希望。 我假设您可以在那里检索所有这些信息;)
答案 1 :(得分:0)
使用$ cordovaOauth,可以获得一个令牌。 或者在我的情况下,在google api docs中搜索后,我需要获取一个身份验证码,然后将其发送到服务器端。所以我通过以下方式重新编写代码:
.factory('$googleApi', function($http, $q) {
return {
connect: function(clientId, appScope, options) {
var deferred = $q.defer();
window.cordova=true;
if(window.cordova) {
var redirect_uri = "http://localhost/callback";
if(options !== undefined) {
if(options.hasOwnProperty("redirect_uri")) {
redirect_uri = options.redirect_uri;
}
}
var browserRef = window.open('https://accounts.google.com/o/oauth2/auth?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&scope=' + appScope.join(" ") + '&access_type=offline&approval_prompt=force&response_type=code', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
browserRef.addEventListener("loadstart", function(event) {
if((event.url).indexOf(redirect_uri) === 0) {
browserRef.removeEventListener("exit",function(event){});
browserRef.close();
var code = (event.url).split("code=")[1];
if(code) {
deferred.resolve({ code: code });
} else {
deferred.reject("Problem authenticating");
}
}
});
browserRef.addEventListener('exit', function(event) {
deferred.reject("The sign in flow was canceled");
});
} else {
deferred.reject("Cannot authenticate via a web browser");
}
return deferred.promise;
}
}
})