java – 在Box Android API中加载,保存和使用身份验证数据
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 在Box Android API中加载,保存和使用身份验证数据,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3087字,纯文字阅读大概需要5分钟。
内容图文
![java – 在Box Android API中加载,保存和使用身份验证数据](/upload/InfoBanner/zyjiaocheng/793/72769bc7dde3435a8ceb6dc07997d951.jpg)
我最近一直试图在我的Android应用程序中实现Box.我知道如何启动身份验证活动并使BoxAndroidClient对象准备就绪,但我不知道如何保存令牌(SharedPreferences?),加载它们然后使用加载的令牌进行身份验证,因此用户不会每次他想要在云中访问他的文件时登录他的盒子帐户.
我试图刷新以前保存的令牌(因为Exception告诉我我的AccessToken不正确).
BoxAndroidOAuthData data = new BoxAndroidOAuthData(new HashMap<String, Object>(){
private static final long serialVersionUID = 1L;
{
put(BoxAndroidOAuthData.FIELD_ACCESS_TOKEN, prefs.acc);
put(BoxAndroidOAuthData.FIELD_REFRESH_TOKEN, prefs.ref);
put(BoxAndroidOAuthData.FIELD_EXPIRES_IN, prefs.exp);
put(BoxAndroidOAuthData.FIELD_TOKEN_TYPE, prefs.typ);
}
});
data = new BoxAndroidOAuthData(client.getOAuthManager().refreshOAuth(BoxOAuthRequestObject.refreshOAuthRequestObject(data.getRefreshToken(), C, S)));
我还有另外一个例外:
07-02 22:07:16.433: W/System.err(4684): com.box.restclientv2.exceptions.BoxRestException: Unexpected token (END_OBJECT), expected FIELD_NAME: missing property 'type' that is to contain type id (for class com.box.boxjavalibv2.dao.BoxServerError)
07-02 22:07:16.433: W/System.err(4684): at [Source: java.io.StringReader@b55b2c78; line: 1, column: 69]
07-02 22:07:16.433: W/System.err(4684): at com.box.restclientv2.responseparsers.DefaultBoxJSONResponseParser.parse(DefaultBoxJSONResponseParser.java:75)
07-02 22:07:16.433: W/System.err(4684): at com.box.boxjavalibv2.responseparsers.ErrorResponseParser.parse(ErrorResponseParser.java:31)
07-02 22:07:16.433: W/System.err(4684): at com.box.restclientv2.responses.DefaultBoxResponse.parseResponse(DefaultBoxResponse.java:51)
07-02 22:07:16.433: W/System.err(4684): at com.box.boxjavalibv2.resourcemanagers.BoxResourceManager.getResponseAndParse(BoxResourceManager.java:168)
07-02 22:07:16.433: W/System.err(4684): at com.box.boxjavalibv2.resourcemanagers.BoxResourceManager.getResponseAndParseAndTryCast(BoxResourceManager.java:143)
07-02 22:07:16.433: W/System.err(4684): at com.box.boxjavalibv2.resourcemanagers.BoxOAuthManager.refreshOAuth(BoxOAuthManager.java:68)
由于我没有找到关于如何在Java中正确执行auth部分的任何教程(SDK中包含的示例不包括任何保存令牌的方法),是否有人可以为此提供一个好的示例?
解决方法:
你不应该自己刷新令牌,sdk会为你做.因此,即使您的访问令牌不正确,只要刷新令牌正确,sdk将为您提供新的访问令牌.
BoxAndroidOAuthData对象是一个parcelable,因此可以这种方式保存.它也可以通过toJSONString(new ObjectMapper())序列化为json字符串,并通过Utils.parseJSONStringIntoObject(jsonString,BoxAndroidOAuthData.class)从json字符串反序列化,因此它也可以保存为字符串.共享偏好是其中一种选择,尽管它可能不如您想要的那么安全.
作为最简单的(不是最好的)示例:
1.保存身份验证:
sharedPref.edit().putString(“auth”,authData.toJSONString(new ObjectMapper());
2.加载身份验证:
BoxAndroidOAuthData authData = Utils.parseJSONStringIntoObject(sharedPref.getString(“auth”),BoxAndroidOAuthData.class);
boxClient.authenticate(的authData);
请注意,只要BoxAndroidOAuthData中的刷新令牌仍然有效,您无需担心刷新访问令牌,sdk会为您刷新它.如果您的刷新令牌无效,sdk将抛出AuthFatalFailureException,您的应用程序需要处理它.
内容总结
以上是互联网集市为您收集整理的java – 在Box Android API中加载,保存和使用身份验证数据全部内容,希望文章能够帮你解决java – 在Box Android API中加载,保存和使用身份验证数据所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。