Cordova Oauth与谷歌和服务器端电话

时间:2015-04-15 08:05:32

标签: cordova google-oauth server-side

我有一个Ionic / Cordova应用程序。我使用$ cordovaOauth.google与谷歌联系。我只是获得了访问令牌。我把它发送到我的服务器端。

即使访问令牌无效,我也需要访问用户信息。我读到我需要使用Refresh Token。但我没有。

我可以从访问令牌获取刷新令牌吗?

2 个答案:

答案 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;
        }
    }
})