无法生成刷新访问令牌

时间:2015-01-29 09:03:51

标签: javascript oauth-2.0 google-oauth

我能够生成访问令牌,但响应对象为刷新令牌返回null,以下是我的代码。

JavaScript的:

 function connect_dfa(oauthurl,scop,redirect,clientId) {


            var width = 1024;
            var height = 512;
            var left = (screen.width / 2) - (width / 2);
            var top = (screen.height / 2) - (height / 2);
            var specs = 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,copyhistory=no,width='+width+',height='+height+',top='+top+',left='+left;
            var url = oauthurl+"&scope="+scop+"&redirect_uri="+redirect+"&response_type=code&client_id="+clientId;
            alert (url);
            var win = window.open(url, 'scgid platform', specs, false);
        return false;
    }

在代码使用身份验证代码生成访问令牌后重定向到重定向URL:

flow = new GoogleAuthorizationCodeFlow.Builder(HTTP_TRANSPORT, JSON_FACTORY, CLIENT_ID, CLIENT_SECRET, SCOPES).build();


final TokenResponse response = flow.newTokenRequest(dfaToken).setRedirectUri(CALLBACK_URI)
        .execute();

System.out.println(response.getAccessToken());
System.out.println(response.getRefreshToken());

它返回一个访问令牌,例如:ya29.CgH2ZBKtHUBr6uJtOs8q0q2vf_tllv_UYMF-Vcd-bODGOgoxqz05mzfDkymEGjVdmYuw2Os4FFpQPQ" 但是为刷新令牌重新命名为NULL。

因为我能够生成访问令牌,所以我做错了什么。

2 个答案:

答案 0 :(得分:0)

您需要将"&access_type=offline"添加到授权窗口网址以获取刷新令牌。有关详细信息:https://developers.google.com/accounts/docs/OAuth2WebServer#formingtheurl

答案 1 :(得分:0)

生成刷新令牌的步骤:

第1步: 将应用的返回网址配置为http://0.0.0.0。因此它会使用代码将您重定向到localhost。 示例:http://0.0.0.0/?state=authenticated&code=<code>

第2步:使用您的客户端代码导航到以下网址

https://account.box.com/api/oauth2/authorize?response_type=code&client_id=<client_id>&state=authenticated

第3步: 授予对api的访问权限,然后从您的网址复制<code>。 示例:http://0.0.0.0/?state=authenticated&code=<code>

步骤4:使用以下参数向https://api.box.com/oauth2/token发送请求

grant_type = authorization_code,
    client_id = <client_id>,
    client_secret = <client_secret>,
    code = code you generated in step 3

这会让你回到对象下面:

access_token,
expires_in, 
restricted_to, 
refresh_token, 
token_type, 
created_time

刷新令牌有效期:60天。

访问令牌到期:60分钟。

注意:在10秒内使用代码

注意:每次重新生成access_token令牌时,您都会获得新的刷新令牌。 For more information refer box documentations