Signpost OAuth on Android: How to recreate a Consumer between two successful runs?

I have successfully used Signpost to authorize secure resource calls to my Google account through OAuth.

However, it seems a little strange that the user must access through Google every time and provide access. Is there a way to serialize the consumer and recreate it so that re-authorization is not needed? I tried to save the tokens, secret and verifier in the general settings and set them in the Consumer, but I get an OAuthExpectationFailedException.

Any ideas?

+3
source share
1 answer

, , :

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:

, OAuthConsumer OAuthProvider , HTTP-. , .

+7

Source: https://habr.com/ru/post/1768787/


All Articles