Тяжелое время с OAuth в Twitter4j.До этого у меня была проблема, подробно описанная в # 3255153 и ошибка 401, но в конце концов она была устранена, и я столкнулся с более трудной задачей.
Страница авторизации приложения Twitter запускается вбраузер, я вхожу в систему и утверждаю приложение для моей учетной записи.Затем он перенаправляет обратно в приложение, и ничего не происходит.Представление точно такое же, как и до запуска страницы авторизации.
Чтобы увидеть, сработало ли это, я установил для Toast сообщение «Вход в Twitter успешное» в onResume или onNewIntent (показано ниже), которое никогда не появляется.Однако получен URL-адрес успешного обратного вызова, так как эта запись отображается в LogCat:
12-18 09:25:50.426: I/ActivityManager(186): Starting: Intent { act=android.intent.action.VIEW cat=[android.intent.category.BROWSABLE] dat=snapp://twitter?oauth_token=tokenhere&oauth_verifier=verifierhere cmp=com.infini_servers.snapp/.SnappActivity } from pid 7853
Вот мой onNewIntent (также есть виртуальный клон для onResume):
@Override
protected void onNewIntent(Intent intent)
{
super.onNewIntent(intent);
Uri uri = intent.getData();
if (uri != null && uri.toString().startsWith(CALLBACKURL))
{
Toast.makeText(getBaseContext(), "Login to twitter successful!", Toast.LENGTH_LONG);
String verifier = uri.getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER);
try
{
provider.retrieveAccessToken(consumer, verifier);
AccessToken accessToken = new AccessToken(consumer.getToken(),
consumer.getTokenSecret());
twitter.setOAuthConsumer(consumerKey, consumerSecret);
twitter.setOAuthAccessToken(accessToken);
String tweet = "Test";
twitter.updateStatus(tweet);
Toast.makeText(getBaseContext(), "Tweet Successful!", Toast.LENGTH_LONG);
}
catch (Exception e)
{
Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_LONG);
}
}
}
Исоответствующие биты моего манифеста:
<activity
android:label="@string/app_name"
android:name=".SnappLaunch" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:label="@string/app_name"
android:name=".SnappActivity"
android:launchMode="singleInstance" >
<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="snapp" android:host="twitter" />
</intent-filter>
</activity>