首先让我描述一下我的工作......
(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,而不是返回到我的活动。