【发布时间】:2012-01-23 01:18:15
【问题描述】:
在 Twitter4j 中使用 OAuth 时遇到了困难。在此之前,我遇到了#3255153 中详述的问题和一个 401 错误,但最终解决了这些问题,并且遇到了一个更难解决的问题。
Twitter 应用程序授权页面在浏览器中启动,我登录并批准我的帐户的应用程序。然后它重定向回应用程序,没有任何反应。该视图与启动授权页面之前完全相同。
为了查看它是否有效,我在 onResume 或 onNewIntent(如下所示)中设置了 Toast 一条消息说“登录到 Twitter 成功”,该消息永远不会弹出。但是,会收到成功的回调 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>
【问题讨论】:
-
我遇到了同样的问题。您找到解决问题的方法了吗?
标签: android oauth twitter-oauth twitter4j