обратный вызов из OAuth не вызывает onResume () - PullRequest
1 голос
/ 17 сентября 2011

Я использую oauth-signpost в качестве своей библиотеки OAuth. Когда я направляю пользователя на страницу авторизации, пользователь входит в систему и может авторизовать мое приложение. Когда это происходит, приложение возвращается в фокус и запускает метод onCreate () вместо метода onResume ().

Мой код выглядит следующим образом:

private static final String             CONSUMER_KEY      = "---";
private static final String             CONSUMER_SECRET   = "---";

private static String                   ACCESS_KEY        = null;
private static String                   ACCESS_SECRET     = null;

private static final String             REQUEST_TOKEN_URL = "https://api.twitter.com/oauth/request_token";
private static final String             ACCESS_TOKEN_URL  = "https://api.twitter.com/oauth/access_token";
private static final String             AUTH_URL          = "https://api.twitter.com/oauth/authorize";
private static final String             CALLBACK_URL      = "myApp://Tweets";

private static CommonsHttpOAuthConsumer consumer          = new CommonsHttpOAuthConsumer(CONSUMER_KEY,CONSUMER_SECRET);

private static CommonsHttpOAuthProvider provider          = new CommonsHttpOAuthProvider(REQUEST_TOKEN_URL,ACCESS_TOKEN_URL,AUTH_URL);


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    String authUrl = null;
    try {
        authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL);
    } catch(OAuthMessageSignerException e) {
        e.printStackTrace();
    } catch(OAuthNotAuthorizedException e) {
        e.printStackTrace();
    } catch(OAuthExpectationFailedException e) {
        e.printStackTrace();
    } catch(OAuthCommunicationException e) {
        e.printStackTrace();
    }
    Log.d("OAuthTwitter", "authUrl" + authUrl);

    WebView webview = new WebView(this);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.setVisibility(View.VISIBLE);
    setContentView(webview);
    webview.loadUrl(authUrl);

}

    @Override
public void onResume() {
    super.onResume();
    Uri uri = this.getIntent().getData();

    if (uri != null && uri.toString().startsWith(CALLBACK_URL)) {
        Log.d("OAuthTwitter", uri.toString());
        String verifier = uri.getQueryParameter(OAuth.OAUTH_VERIFIER);
        Log.d("OAuthTwitter", verifier);
        try {

            provider.retrieveAccessToken(consumer, verifier);
            ACCESS_KEY = consumer.getToken();
            ACCESS_SECRET = consumer.getTokenSecret();

            Log.d("OAuthTwitter", ACCESS_KEY);
            Log.d("OAuthTwitter", ACCESS_SECRET);

        } catch (OAuthMessageSignerException e) {
            e.printStackTrace();
        } catch (OAuthNotAuthorizedException e) {
            e.printStackTrace();
        } catch (OAuthExpectationFailedException e) {
            e.printStackTrace();
        } catch (OAuthCommunicationException e) {
            e.printStackTrace();
        }
    }

Manifest.xml

    <application
    android:icon="@drawable/icon"
    android:label="@string/app_name">
    <activity
        android:name=".Tweets"
        android:label="@string/app_name">
        <intent-filter>
            <action
                android:name="android.intent.action.MAIN" />
            <category
                android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action
                android:name="android.intent.action.VIEW" />
            <category
                android:name="android.intent.category.DEFAULT" />
            <category
                android:name="android.intent.category.BROWSABLE" />
            <data
                android:scheme="myApp"
                android:host="Tweets" />

        </intent-filter>

    </activity>

Как заставить мое приложение вызывать onResume (), чтобы я мог затем продолжить процесс OAuth?

1 Ответ

1 голос
/ 27 января 2012

В этом случае попробуйте установить режим запуска активности на singleTask.

См. Ссылку для получения дополнительной информации: http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...