首先让我描述一下我的工作…
(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:///
它将为您工作希望:)