android - 无法成功登录 Twitter(使用 Twitter4J 库)重定向回我的 Android 应用

标签 android twitter twitter-oauth twitter4j android-twitter

首先让我描述一下我的工作...

(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/

相关文章:

python - 按收藏夹中的 Twitter API 页面的时间(而不是创建时间)对收藏夹中的 Twitter API 页面进行排序

Android studio - 如何为不同风格创建 res 文件夹

javascript - Cordova 项目中的"TwitterConnect is not defined"

android - ionic2 构建 apk @mipmap/icon 错误

ios - 适用于 iOS 的 Twitter 登录 API 未返回电子邮件

android - 在twitter4j访问directmessage时报错显示 "unable to parse ' 357786694 1' as integer"

c# - Owin 外部登录操作 "Challenge"始终重定向到登录页面

php - 如何编写 PHP 脚本来获取给定用户在 Twitter 中的关注者数量?

java - Android:如何通过 android:onClick 在 custom_layout.xml 中为自定义对话框中的按钮添加事件处理程序?

android - 如何暂停在android中捕获视频?