Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如果GoogleCredential过期,如何检查它_Android_Google Api_Oauth 2.0_Credentials_Access Token - Fatal编程技术网

Android 如果GoogleCredential过期,如何检查它

Android 如果GoogleCredential过期,如何检查它,android,google-api,oauth-2.0,credentials,access-token,Android,Google Api,Oauth 2.0,Credentials,Access Token,我已经从保存的访问令牌和保存的刷新令牌初始化了GoogleCredential变量。但我不知道检查它是否过期了 我知道GoogleCredential有一个函数getExpiresInSeconds。但是,如果我从保存的访问令牌和保存的刷新令牌初始化GoogleCredential,函数getExpiresInSeconds将返回null 这种情况下getExpiresInSeconds将不为null mResponse = mFlow.newTokenRequest(code).setRedi

我已经从保存的访问令牌和保存的刷新令牌初始化了GoogleCredential变量。但我不知道检查它是否过期了

我知道GoogleCredential有一个函数getExpiresInSeconds。但是,如果我从保存的访问令牌和保存的刷新令牌初始化GoogleCredential,函数getExpiresInSeconds将返回null

这种情况下getExpiresInSeconds将不为null

mResponse = mFlow.newTokenRequest(code).setRedirectUri(REDIRECT_URI).execute();
mCredential =  new GoogleCredential.Builder().setClientSecrets(CLIENT_ID, CLIENT_SECRET).setJsonFactory(mJsonFactory).setTransport(mHttpTransport).build();
mCredential.setFromTokenResponse(mResponse);
mCredential.getExpiresInSeconds() // will return expired value in second
但在这种情况下

String accessTokenSave = mPrefs.getString(GOOGLE_DRIVE_TOKEN, "NO KEY");
String accessRefreshTokenSave = mPrefs.getString(GOOGLE_DRIVE_REFRESH_TOKEN, "NO KEY");

mHttpTransport = new NetHttpTransport();
mJsonFactory = new JacksonFactory();
mCredential = new GoogleCredential.Builder()
.setClientSecrets(CLIENT_ID, CLIENT_SECRET)
.setJsonFactory(mJsonFactory)
.setTransport(mHttpTransport).build();

mCredential.setAccessToken(accessTokenSave);
mCredential.setRefreshToken(accessRefreshTokenSave);
mCredential.getExpiresInSeconds() // will return null value

因此,如何检查mCredential案例从accessTokenSave和accessRefreshTokenSave加载它

一个访问令牌将在一小时内过期,而刷新令牌将在用户撤销之前有效。但是,您永远不应该依赖这些时间,而是应该准备在凭据不再有效时捕获异常,并做出相应的反应


查看文档,了解完整流程的描述,以及实现该流程的示例代码:

我正在使用这个库,它是真正的示例。这不是一个可接受的回答Claudio,特别是如果你是Google高级开发人员程序工程师-。-“。即使我从官方文档中复制了代码,我也有同样的问题。我知道stackoverflow允许打开临时聊天(但我不知道如何)。如果你没有问题,请与我联系(我保证我将在不久的将来发布解决方案)或者,请为@quantm和所有感兴趣的用户重写您的回复。非常感谢;-)