一段时间后投递箱自动断开连接
Drop box automatically disconnect after some time
我使用以下代码将我的 android 应用程序与下拉框连接起来。但是,我发现一段时间后它会自动断开连接。我不知道为什么会这样。可能是访问令牌过期或其他任何内容。那么,我怎样才能持续保持连接。请指导我。提前致谢。
public void connect() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(application);
String accessToken = prefs.getString(Constants.DROPBOX_ACCESS_TOKEN, null);
if (accessToken == null) {
accessToken = Auth.getOAuth2Token();
if (accessToken != null) {
tracker.send(new HitBuilders.EventBuilder()
.setCategory(Analytics.Category.DropBox.name())
.setAction(Analytics.Action.Enable.name())
.build());
prefs.edit().putString(Constants.DROPBOX_ACCESS_TOKEN, accessToken).apply();
try {
Bundle bundle = new Bundle();
bundle.putString(FirebaseAnalytics.Param.ITEM_CATEGORY, Analytics.Category.DropBox.name());
bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, Analytics.Action.Enable.name());
FirebaseAnalytics.getInstance(application).logEvent(FirebaseAnalytics.Event.VIEW_ITEM, bundle);
} catch (Exception e) {
e.printStackTrace();
}
} else {
unlink();
}
}
String uid = Auth.getUid();
String storedUid = prefs.getString(Constants.DROPBOX_USER_ID, null);
if (uid != null) {
if (!uid.equals(storedUid)) {
prefs.edit().putString(Constants.DROPBOX_USER_ID, uid).apply();
}
}
}
Dropbox 正在切换为仅颁发 short-lived 访问令牌(和可选的刷新令牌)而不是 long-lived 访问令牌。你可以找到 more information on this migration here.
应用程序仍然可以通过请求“离线”访问来获得 long-term 访问权限,在这种情况下,应用程序会收到一个“刷新令牌”,可用于根据需要检索新的 short-lived 访问令牌,无需进一步的手动用户干预。您可以在 OAuth Guide and authorization documentation.
中找到更多信息
对于使用官方 Dropbox API v2 Java SDK 的 Android 应用程序,为此,您将使用 startOAuth2PKCE
(而不是 startOAuth2Authentication
) 作为 shown here, and handle the result as shown here。当您这样做时,凭据将同时包含 short-lived 访问令牌和刷新令牌。只要您将这些凭据传递给客户端,其中包括刷新令牌和访问令牌,SDK 将通过在后台执行刷新自动为您处理过期的 short-lived 访问令牌。
我使用以下代码将我的 android 应用程序与下拉框连接起来。但是,我发现一段时间后它会自动断开连接。我不知道为什么会这样。可能是访问令牌过期或其他任何内容。那么,我怎样才能持续保持连接。请指导我。提前致谢。
public void connect() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(application);
String accessToken = prefs.getString(Constants.DROPBOX_ACCESS_TOKEN, null);
if (accessToken == null) {
accessToken = Auth.getOAuth2Token();
if (accessToken != null) {
tracker.send(new HitBuilders.EventBuilder()
.setCategory(Analytics.Category.DropBox.name())
.setAction(Analytics.Action.Enable.name())
.build());
prefs.edit().putString(Constants.DROPBOX_ACCESS_TOKEN, accessToken).apply();
try {
Bundle bundle = new Bundle();
bundle.putString(FirebaseAnalytics.Param.ITEM_CATEGORY, Analytics.Category.DropBox.name());
bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, Analytics.Action.Enable.name());
FirebaseAnalytics.getInstance(application).logEvent(FirebaseAnalytics.Event.VIEW_ITEM, bundle);
} catch (Exception e) {
e.printStackTrace();
}
} else {
unlink();
}
}
String uid = Auth.getUid();
String storedUid = prefs.getString(Constants.DROPBOX_USER_ID, null);
if (uid != null) {
if (!uid.equals(storedUid)) {
prefs.edit().putString(Constants.DROPBOX_USER_ID, uid).apply();
}
}
}
Dropbox 正在切换为仅颁发 short-lived 访问令牌(和可选的刷新令牌)而不是 long-lived 访问令牌。你可以找到 more information on this migration here.
应用程序仍然可以通过请求“离线”访问来获得 long-term 访问权限,在这种情况下,应用程序会收到一个“刷新令牌”,可用于根据需要检索新的 short-lived 访问令牌,无需进一步的手动用户干预。您可以在 OAuth Guide and authorization documentation.
中找到更多信息对于使用官方 Dropbox API v2 Java SDK 的 Android 应用程序,为此,您将使用 startOAuth2PKCE
(而不是 startOAuth2Authentication
) 作为 shown here, and handle the result as shown here。当您这样做时,凭据将同时包含 short-lived 访问令牌和刷新令牌。只要您将这些凭据传递给客户端,其中包括刷新令牌和访问令牌,SDK 将通过在后台执行刷新自动为您处理过期的 short-lived 访问令牌。