1
からURIを抽出:私はログインを管理するには、以下の機能を持っているのAndroidのTwitterのOAuth
private static final String CALLBACK_URL = "myapp://twitter";
private void loginViaOAuth() {
try {
consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
provider = new CommonsHttpOAuthProvider(REQUEST_URL, ACCESS_TOKEN_URL, AUTH_URL);
provider.setOAuth10a(true);
String authURL = provider.retrieveRequestToken(consumer, CALLBACK_URL);
this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authURL)));
} catch (Exception e) {
e.printStackTrace();
}
}
そしてたManifest.xml
<activity android:name=".Twitterconnect"
android:launchMode="singleTask"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name" >
<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="twitter" />
</intent-filter>
</activity>
私が得る応答は次のとおりです。
05-03 11:24:03.968: INFO/ActivityManager(59): Starting activity: Intent {
act=android.intent.action.VIEW
cat=[android.intent.category.BROWSABLE]
dat=myapp://twitter?oauth_token=tJpJHOOwoTGMwdvHyYbfX2tyHKOp0Y2kdRRZf3sM&oauth_verifier=xc49oM8eVVmK46ZSLz2RMT2uqXn3SxrMxf5ZAMXaD2Y
cmp=my.app/.Twitterconnect
}
ここにあります私OnResume機能:
@Override
protected void onResume() {
super.onResume();
Uri uri = this.getIntent().getData();
if (uri != null && uri.toString().startsWith(CALLBACK_URL)) {
String verifier = uri.getQueryParameter(OAuth.OAUTH_VERIFIER);
Log.d("verifier:", verifier);
try {
provider.setOAuth10a(true);
provider.retrieveAccessToken(consumer, verifier);
ACCESS_KEY = consumer.getToken();
ACCESS_SECRET = consumer.getTokenSecret();
AccessToken a = new AccessToken(ACCESS_KEY, ACCESS_SECRET);
// initialize Twitter4J
twitter = new Twitter();
twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
twitter.setOAuthAccessToken(a);
Log.e("TWITTER", "step1");
twitter.updateStatus("Just shared the ".concat(tweet).concat(" on Twitter!"));
Log.e("TWITTER", ""+buttonTwitterShare.getVisibility());
buttonTwitterShare.setVisibility(View.GONE);
Log.e("TWITTER", "step2");
Log.e("TWITTER", ""+buttonTwitterShare.getVisibility());
Toast.makeText(getBaseContext(), "Post successfully tweeted!", Toast.LENGTH_LONG).show();
} catch (Exception e) {
e.printStackTrace();
}
}
}
私の質問は、なぜ関係なく、私はURIでログインどのようなプロファイルUri uri = this.getIntent().getData();
を介して取得されていないが、常にNULLですか? 応答からoauth_token
とoauth_verifier
を抽出するには、dat=myapp://twitter?oauth_token=tJpJHOOwoTGMwdvHyYbfX2tyHKOp0Y2kdRRZf3sM&oauth_verifier=xc49oM8eVVmK46ZSLz2RMT2uqXn3SxrMxf5ZAMXaD2Y
?