3

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

(1) 我在 Twitter 开发者网站上注册了我的应用程序并获得了一些 OAuth 凭据(消费者密钥、消费者秘密、请求令牌 URL 等)。我尝试在此处输入回调 URL作为“callback://tweeter”(和其他非 Http Urls),但页面验证失败并且我收到“不是有效的 URL 格式”错误消息,所以我将其留空。

(2) 接下来,我使用我的 OAuth 凭据和空的回调 URL 设置我的“CommonsHttpOAuthConsumer”和“OAuthProvider”对象,并按如下方式启动 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) 最后,提交我的请求时,我被重定向到一个页面(仍在网络活动中),祝贺我已授予我的应用程序访问我的 Twitter 帐户的权限,并在需要的地方给了我一个密码。

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

我已经尝试了很多事情(下面描述了几件事),但每次都做不到,并且一直在寻找想法。如果有人可以请帮助我,让我知道我做错了什么,我将感激不尽!

以下是我尝试的两个主要内容:

(1) 我尝试将代码中的 Callback Url 设置为“callback://tweeter”(尽管它在我的应用程序的 Twitter 注册 OAuth 设置中为空白)但是,这一次,当我进行以下方法调用时......

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

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

(2) 我尝试在我的应用程序的 Twitter 注册 OAuth 设置中将回调 URL 设置为 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>

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

4

3 回答 3

3

很高兴您在我的 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"/>

建议简化,因为您必须记住,如果另一个应用程序也使用它,您的应用程序会捡起它,一切都会崩溃!

于 2011-12-23T11:16:59.250 回答
2

我遇到了同样的问题。解决我的问题是确保在清单中设置意图过滤器时,确保您在 android:scheme 中使用的名称都是小写字母,没有下划线,尽管破折号很好,如下所示:

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

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

于 2013-01-11T04:50:35.937 回答
0

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

尝试以这种方式解决如果您错误地输入了回调 URL,那么您将无法返回您的应用程序

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

希望它对你有用:)

于 2016-06-15T13:13:11.970 回答