无法获得成功的Twitter登录(使用Twitter4J库)重定向回我的Android应用程序
作者:互联网
首先让我描述一下我的工作……
(1)我在Twitter Developers网站上注册了我的应用程序并获得了一些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设置中的Callback Url设置为Http Url(例如“http://myhost.com”),并在我的活动清单中指定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>
…但在成功授权后,我会在网络活动(互联网浏览器)中重定向到myhost.com,而不是返回我的活动.
解决方法:
很高兴你在我的Twitter教程中找到答案:http://www.anddev.org/advanced-tutorials-f21/sending-a-tweet-t54389.html
对于其他人:
当它应该是“callback:/// tweeter”(即3个正斜杠)时,我将回调url指定为“callback:// tweeter”(2个正斜杠).
事实上,为简化起见,它只需要“callback:///”,然后意图过滤数据节点就是:
<data android:scheme="callback"/>
我不建议简化,因为你必须记住,如果另一个应用程序也使用它,你的应用程序会拿起它,所有地狱都会破坏!
标签:twitter4j,android,twitter,twitter-oauth,android-twitter 来源: https://codeday.me/bug/20190902/1792370.html