我能够生成访问令牌,但响应对象为刷新令牌返回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。
因为我能够生成访问令牌,所以我做错了什么。
答案 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