首先让我描述一下我的工作...
(1) 我已经在 Twitter Developers 网站上注册了我的应用程序并获得了一些 OAuth 凭证(消费者 key 、消费者 key 、请求 token URL 等)。我尝试在此处输入 Callback URL 作为“callback://tweeter”(和其他非 Http Urls)但页面验证失败并且我收到“不是有效的 URL 格式”错误消息,所以我离开了这个空白。
(2) 接下来,我使用我的 OAuth 凭据和空回调 URL 设置我的“CommonsHttpOAuthConsumer”和“OAuthProvider”对象,并启动一个网络 Activity ,如下所示:
CommonsHttpOAuthConsumer consumer = new
CommonsHttpOAuthConsumer(myTwitterConsumerKey,
myTwitterConsumerSecret);
OAuthProvider provider = new
DefaultOAuthProvider(myTwitterRequestTokenUrl,
myTwitterAccessTokenUrl, myTwitterAuthorizeUrl);
String authUrl =
provider.retrieveRequestToken(consumer, "");
startActivity(new
Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));
(3) 接下来我跟踪启动的网络 Activity (从我的应用程序)并登录到我的 Twitter 帐户(从而确认我允许该应用程序访问我的 Twitter 帐户)。
(4) 最后,在提交我的请求时,我被重定向到一个页面(仍在网络 Activity 中),祝贺我已授予我的应用程序访问我的 Twitter 帐户的权限,并给我一个 pin 以在需要的地方输入。
现在我当然想要的是,在成功授权后,我被重定向回我的应用程序(启动网络 Activity 的 Activity ),我在那里处理成功的授权。
我已经尝试了很多事情(下面描述了一些),但每次都做不到,并且无法找到想法。如果有人可以帮助我,让我知道我做错了什么,我将感激不尽!
以下是我尝试过的两个主要内容:
(1) 我尝试将我的代码中的回调 Url 设置为“callback://tweeter”(尽管它在我的应用程序的 Twitter 注册 OAuth 设置中为空白)但是,这一次,当我进行以下方法调用时...... .
provider.retrieveRequestToken(consumer, "callback://tweeter");
... 抛出 OAuthCommunicationException(包含消息:“与服务提供商的通信失败...”)。
(2) 我尝试将应用程序的 Twitter 注册 OAuth 设置中的回调 Url 设置为 Http Url(例如“http://myhost.com”),并在我的 Activity list 中指定一个 intent-filter 以将回调捕获为遵循...
<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="http" android:host="myhost.com" />
</intent-filter>
...但在成功授权后,我在网络 Activity (互联网浏览器)中被重定向到 myhost.com 而不是返回到我的 Activity 。
最佳答案
很高兴您在我的 Twitter 教程中找到了答案:http://www.anddev.org/advanced-tutorials-f21/sending-a-tweet-t54389.html
对于其他人:
当它应该是“callback:///tweeter”(即 3 个正斜杠)时,我将回调 url 指定为“callback://tweeter”(2 个正斜杠)。
其实为了简单起见,只要是“callback:///”,intent filter数据节点就可以简单的:
<data android:scheme="callback"/>
我不推荐这种简化,因为您必须记住,如果另一个应用也使用它,您的应用会接受它,一切都会崩溃!
关于android - 无法成功登录 Twitter(使用 Twitter4J 库)重定向回我的 Android 应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8610519/