我想在后台保存用户数据,但不了解如何在没有用户交互的情况下连接到Drive API。
从我的第一次连接后的理解
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstance);
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Drive.API)
.addScope(Drive.SCOPE_FILE)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
}
我想获取一个刷新令牌,稍后将使用它来获取访问令牌,该令牌将用于连接到API并保存用户的数据。使用Drive API for Android看起来不可行
如果有人指出我正确的方法,我也将不胜感激!
最佳答案
要实现从后台服务将文件保存到云端硬盘,您需要启动一个活动,在该活动中将处理权限活动的活动结果。
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
if (resultCode == Activity.RESULT_OK) {
// permission is given
finish();
} else {
or show error
}
}
要获取允许长期访问的refresh token,您的应用程序请求授权以访问由范围标识的资源。您需要在验证请求中添加
prompt=consent
参数。包含prompt=consent
时,每次您登录应用程序时都会显示同意屏幕。刷新令牌仅在第一次授予应用程序权限时返回。根据此thread:
仅在用户的首次授权下提供refresh_token。后续授权(例如您在测试OAuth2集成时所做的授权)将不会再次返回refresh_token。
然后,要使用刷新令牌生成访问令牌,可以参考此question。