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



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

(1)我已经在Twitter开发者网站上注册了我的应用程序,并获得了一些OAuth凭证(消费者密钥,消费者秘密,请求令牌URL等)。我试着在这里输入Callback URL作为"Callback://tweeter"(和其他非http URL),但页面验证失败,我得到一个"不是一个有效的URL格式"错误消息,所以我留下这个空白。

(2)接下来,我设置我的'CommonsHttpOAuthConsumer'和'OAuthProvider'对象与我的OAuth凭据和空的回调URL,并启动一个web活动如下:

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)接下来,我跟随启动的网络活动(从我的应用程序)并登录到我的Twitter帐户(从而承认我允许应用程序访问我的Twitter帐户)。

(4)最后,提交我的请求,我被重定向到一个页面(仍然在web活动中),祝贺我已经授予我的应用程序访问我的Twitter帐户,并给了我一个pin,以进入需要的地方。

现在我想要的当然是成功的授权,我被重定向回我的应用程序(启动web活动的活动),我在那里处理成功的授权。

我已经尝试了很多东西(下面描述的几个),但每次都很短,我被困在想法中。如果有人能帮助我,让我知道我做错了什么,我将不胜感激!

以下是我尝试过的两件事:

(1)我尝试设置回调Url在我的代码"回调://tweeter"(尽管它是空白在我的应用程序的Twitter注册OAuth设置),但是,这一次,当我做以下方法调用…

provider.retrieveRequestToken(consumer, "callback://tweeter");

…抛出OAuthCommunicationException(包含消息:"与服务提供商的通信失败…")。

(2)我尝试设置回调Url在我的应用程序的Twitter注册OAuth设置为Http Url(例如:"http://myhost.com"),并在我的活动清单中指定一个意图过滤器来捕获回调,如下所示…

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

…但是在成功授权后,我在web活动(internet浏览器)中被重定向到myhost.com,而不是返回到我的活动。

很高兴你在我的Twitter教程中找到了答案:http://www.anddev.org/advanced-tutorials-f21/sending-a-tweet-t54389.html

其他人:

我将回调url指定为"callback://tweeter"(2个斜杠),而它应该是"callback:///tweeter"(即3个斜杠)。


实际上,为了简化,它只需要是"callback:///",然后意图过滤器数据节点简单地是:

 <data android:scheme="callback"/>

我将而不是推荐这种简化,因为你必须记住,如果另一个应用程序也使用它,你的应用程序将会选择它,所有的地狱将会失控!

我也有同样的问题。修复我的问题是确保在清单中设置意图过滤器时,确保您在android:scheme中使用的名称都是小写字母,没有下划线,虽然破折号很好,像这样:

<data android:scheme="your-callback-here" />

只是我作为一个新开发人员偶然发现的东西!

你可能会被重定向到你的应用程序

试着用这种方法解决如果你把Callback URL放错了,那么你就不能返回到你的应用程序

你必须把它放在twitter创建的应用回调URL: http://twitter.com/oauth/authorize?oauth_token=actualtokenhere&oauth_callback=myapp:///

它将为您工作希望:)

最新更新