При возврате с веб-страницы поставщик не имеет значения - PullRequest
0 голосов
/ 27 июня 2010

Я использую signpost-oauth do oauth в android, и после входа в систему на веб-странице возвращаюсь в Activity, провайдер иногда становится нулевым.

public class LoginActivity extends Activity implements View.OnClickListener {

private static OAuthConsumer consumer;
private static OAuthProvider provider;

private static final Uri CALLBACK= Uri.parse("xxx://callback?");

...

@Override
protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        final Uri uri = intent.getData();
        if (uri != null && uri.toString().startsWith(CALLBACK)) {

            final String pin = uri.getQueryParameter(OAuth.OAUTH_VERIFIER);

            try {
                //provider.setOAuth10a(true);
                provider.retrieveAccessToken(consumer, pin);
                    } catch (final Exception e) {

            }
            }
}
...

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.oAuthLoginBtn:
      new Thread(new Runnable() {
        public void run() {
          LoginActivity.consumer = new CommonsHttpOAuthConsumer(
                            apiKey, appSecret);
          LoginActivity.provider = new CommonsHttpOAuthProvider(
                            oauthUrl + Data.REQUEST_TOKEN_URL, oauthUrl
                                    + Data.ACCESS_TOKEN_URL, oauthUrl
                                    + Data.AUTHORIZE_URL);

    LoginActivity.provider.setOAuth10a(true);
           try {
                        final String authUrl = LoginActivity.provider
                                .retrieveRequestToken(LoginActivity.consumer,
                                        CALLBACK);

                        final Uri uri = Uri.parse(authUrl);
                        final Intent it = new Intent(Intent.ACTION_VIEW, uri);
                        LoginActivity.this.startActivity(it);
        } catch (final Exception e) {

           }
         }
        }).start();
        break;
    }

}

и manifest.xml

<activity android:name=".ui.LoginActivity" android:label="@string/activity_login"
            android:launchMode="singleInstance" android:configChanges="orientation|keyboardHidden">
            <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="xxx" />
            </intent-filter>
        </activity>

Я не знаю, почему провайдер иногда нулевой.

Ответы [ 2 ]

0 голосов
/ 11 октября 2012

Может быть <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> и / или <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> отсутствует?

0 голосов
/ 21 июля 2010

Я думаю, что вы не получаете правильный oauth_token и oauth_verifier.определите хост

<data android:scheme="xxx" android:host="twitt" />

, вы получите правильные значения.

xxx://twitt?oauth_token=it23W5yOy13x6s1ox6kpaOow2aM70OKTW3WTy4h8Q4&oauth_verifier=gRuGGE4osgjTwltooi9MG4u7a4EbxAsIxvVjZqd9dA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...