Carregue, salve e use dados de autenticação na API do Box Android
Recentemente, tentei implementar o Box no meu aplicativo para Android. Eu sei como iniciar a atividade de autenticação e obter o objeto BoxAndroidClient pronto para operá-la, mas não tenho idéia de como salvar tokens (SharedPreferences?), Carregá-los e depois autenticar usando tokens carregados, para que o usuário não tenha para fazer o login em sua conta de caixa toda vez que ele gostaria de acessar seus arquivos na nuvem.
Eu tentei atualizar tokens salvos anteriormente (por causa da exceção que me disse que meu AccessToken está incorreto).
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)));
E eu tenho outra exceção:
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)
Como não encontrei nenhum tutorial sobre como fazer corretamente a parte de autenticação em Java (as amostras incluídas no SDK não abrangem nenhum método de salvar tokens), alguém poderia fornecer um bom exemplo para isso?