2 Stimmen

Android Twitter4J OAuth und oauth_token_secret automatisch abrufen?

Ich habe Twitter4J in meiner Android-Anwendung implementiert und es funktioniert gut. Aber nachdem ich mich mit der Twitter-Login-Seite angemeldet habe, fordert es den Benutzer auf, den PIN-Code manuell einzugeben.

In der Twitter4J-Klasse gibt es eine Methode zum Abrufen und Speichern (in die SharedPreferences) des OAuth und oauth_token_secret.

/**
* Den oauth_verifier abrufen und das oauth und oauth_token_secret für zukünftige API-Aufrufe speichern.
*/
@Override
protected Void doInBackground(Uri ... params) {
        final Uri uri = params[0];
        final String oauth_verifier = uri.getQueryParameter(OAuth.OAUTH_VERIFIER);

        try {
            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();

                    String token = prefs.getString(OAuth.OAUTH_TOKEN, "");
                    String secret = prefs.getString(OAuth.OAUTH_TOKEN_SECRET, "");

                    consumer.setTokenWithSecret(token, secret);
                    context.startActivity(new Intent(context, MainAct.class));

                    executeAfterAccessTokenRetrieval();

                    Log.i(TAG, "OAuth - Access Token Retrieved");

                } catch (Exception e) {
                    Log.e(TAG, "OAuth - Access Token Retrieval Error", e);
                }

                return null;
    }

Manifest - PrepareRequestTokenActivity

>

Ich verstehe nicht, warum es das OAUTH_TOKEN und das OAUTH_SECRET nicht abruft. Wie autorisiere ich ohne Eingabe der PIN-Nummer? Mache ich etwas falsch?

Bitte helfen Sie mir.

Vielen Dank

0 Stimmen

Welche Klassen hast du verwendet? Und zeige uns etwas Code aus der Manifest-Datei und der Konstantenklasse.

0 Stimmen

Ich habe github.com/ddewaele/AndroidTwitterSample für die Integration von twitter4j verwendet. Ich habe die Frage bearbeitet, bitte schauen Sie sich diese an.

3voto

user Punkte 323

Hey, dieser Code könnte hilfreich sein,

AccessToken accessToken = getAccessToken();

        Configuration conf = new ConfigurationBuilder()
                .setOAuthConsumerKey(TwitterConstants.CONSUMER_KEY)
                .setOAuthConsumerSecret(TwitterConstants.CONSUMER_SECRET)
                .setOAuthAccessToken(accessToken.getToken())
                .setOAuthAccessTokenSecret(accessToken.getTokenSecret())
                .build();

        OAuthAuthorization auth = new OAuthAuthorization(conf,
                conf.getOAuthConsumerKey(), conf.getOAuthConsumerSecret(),
                new AccessToken(conf.getOAuthAccessToken(),
                        conf.getOAuthAccessTokenSecret()));

und um den AccessToken zu erhalten,

public AccessToken getAccessToken() {
    String token = prefs.getString(OAuth.OAUTH_TOKEN, "");
    String tokenSecret = prefs.getString(OAuth.OAUTH_TOKEN_SECRET, "");

    if (token != null && tokenSecret != null)
        return new AccessToken(token, tokenSecret);
    else
        return null;
}

1voto

Hassy31 Punkte 2793

Ich habe das Problem gelöst. Es war ein Problem mit der Callback-URL.

Ich habe Konstanten wie folgt bearbeitet und es hat funktioniert.

public static final String OAUTH_CALLBACK_SCHEME = "x-oauthflow-twitter";
public static final String OAUTH_CALLBACK_HOST = "callback";
public static final String OAUTH_CALLBACK_URL = OAUTH_CALLBACK_SCHEME + "://" + OAUTH_CALLBACK_HOST;

Danke

1 Stimmen

Was haben Sie für callback angegeben, als Sie die Anwendung unter dev.twitter.com erstellt haben?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X