当前位置 : 主页 > 手机开发 > android >

Android上的路标OAuth:如何在两次成功运行之间重新创建消费者?

来源:互联网 收集:自由互联 发布时间:2021-06-11
我成功地使用Signpost通过OAuth授权对Google帐户中受保护资源的调用. 然而,用户必须每次都通过Google并授予访问权限,这似乎有点奇怪.有没有办法序列化消费者并重新创建它,以便不需要重新
我成功地使用Signpost通过OAuth授权对Google帐户中受保护资源的调用.

然而,用户必须每次都通过Google并授予访问权限,这似乎有点奇怪.有没有办法序列化消费者并重新创建它,以便不需要重新授权?我已尝试在共享首选项中保留令牌,密钥和验证程序并在消费者中设置它们但我收到OAuthExpectationFailedException.

有任何想法吗?

收到访问令牌后,您可以将其存储在您的应用首选项中,如下所示:

provider.retrieveAccessToken(consumer, oauth_verifier);

final Editor edit = prefs.edit();
edit.putString(OAuth.OAUTH_TOKEN, consumer.getToken());
edit.putString(OAuth.OAUTH_TOKEN_SECRET, consumer.getTokenSecret());
edit.commit();

之后,您可以像这样重新创建消费者:

private OAuthConsumer getConsumer(SharedPreferences prefs) {
    String token = prefs.getString(OAuth.OAUTH_TOKEN, "");
    String secret = prefs.getString(OAuth.OAUTH_TOKEN_SECRET, "");
    OAuthConsumer consumer = new CommonsHttpOAuthConsumer(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET);
    consumer.setTokenWithSecret(token, secret);
    return consumer;
}

获得消费者后,您可以进行API调用,消费者将对其进行签名.

DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
consumer.sign(request);
HttpResponse response = httpclient.execute(request);

根据signpost docs:

路标对象非常轻量级,因此建议您为应用程序中必须发送已签名HTTP请求的每个线程创建OAuthConsumer和OAuthProvider.这两个对象也是可序列化的,因此您可以在以后保留并恢复它们.

网友评论