J'utilise le signpost-oauth do oauth dans android, et après la connexion sur la page Web, revenez à l'activité, le fournisseur est parfois null.Le fournisseur est null en faisant oauth après avoir retourné de la page Web
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;
}
}
et 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>
Je ne sais pas pourquoi le fournisseur est parfois nulle.
Salut, j'utiliser ceci: xxx: // rappel oauth_verifier = IMoNvawE3nA56zW8dkPl9L% 2FR & oauth_token = 4% 2FuvcAWpzjMNcRBvLKwW4xn9GZDp2a --- ----------------------------- Je vais le tester pendant un moment pour voir s'il est encore parfois nul, thx. – kmlzkma
salut j'ai déplacé cette ligne Provider.setOAuth10a (true); et définissez CALLBACK comme une variable statique !, et j'ai une question pourquoi n'utilisez-vous pas onResume() au lieu de onNewIntent()? – Jorgesys
Salut, j'ai trouvé qu'il est encore parfois null.J'ai utilisé launchMode = "singleInstance" dans le fichier manifest.xml, il faut donc utiliser onNewIntent() pour recevoir cela. – kmlzkma