android– 使用twitter4j库时没有发现身份验证问题

android– 使用twitter4j库时没有发现身份验证问题,第1张

概述我目前正致力于在我的Android应用程序中集成Twitter.我在一定程度上成功地整合了它.但是,我在以下方案中获得了无认证质询发现异常.>我使用仅限App的身份验证(无需登录Twitter)从twitter获取公共提要.我成功取了它们.>当我尝试回复或转发或将其标记为收藏时,我会检查用户是否已登

我目前正致力于在我的Android应用程序中集成Twitter.我在一定程度上成功地整合了它.但是,我在以下方案中获得了无认证质询发现异常.

>我使用仅限App的身份验证(无需登录Twitter)从twitter获取公共提要.我成功取了它们.
>当我尝试回复或转发或将其标记为收藏时,我会检查用户是否已登录,如果未登录,则我首先尝试登录,然后进行回复或转发.
>但是我在尝试登录时遇到上述异常,所以我没有收到回复或转推.

注意:如果我不使用仅限应用程序身份验证并选择直接登录(不提取公共提要),那么它可以正常工作,我可以登录.

以下是堆栈跟踪:

11-14 19:33:03.597: W/System.err(3305): No authentication challenges found11-14 19:33:03.667: W/System.err(3305): Relevant discussions can be found on the Internet at:11-14 19:33:03.667: W/System.err(3305):     http://www.Google.co.jp/search?q=9ddbeb3a or11-14 19:33:03.727: W/System.err(3305):     http://www.Google.co.jp/search?q=937eec8d11-14 19:33:03.747: W/System.err(3305): TwitterException{exceptionCode=[9ddbeb3a-937eec8d c8a7b39b-dc5ea0d9], statusCode=-1, message=null, code=-1, retryAfter=-1, ratelimitStatus=null, version=3.0.4}11-14 19:33:03.797: W/System.err(3305):     at twitter4j.internal.http.httpClIEntImpl.request(httpClIEntImpl.java:177)11-14 19:33:03.857: W/System.err(3305):     at twitter4j.internal.http.httpClIEntWrapper.request(httpClIEntWrapper.java:61)11-14 19:33:03.897: W/System.err(3305):     at twitter4j.internal.http.httpClIEntWrapper.post(httpClIEntWrapper.java:98)11-14 19:33:03.957: W/System.err(3305):     at twitter4j.auth.OAuthAuthorization.getoAuthAccesstoken(OAuthAuthorization.java:145)11-14 19:33:04.097: W/System.err(3305):     at twitter4j.auth.OAuthAuthorization.getoAuthAccesstoken(OAuthAuthorization.java:165)11-14 19:33:04.107: W/System.err(3305):     at twitter4j.TwitterBaseImpl.getoAuthAccesstoken(TwitterBaseImpl.java:381)

编辑:

以下是我用于根据用户是否登录来切换配置的代码.

private TwitterInstance(boolean withLoginConfig) {        ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();        configurationBuilder                .setoAuthConsumerKey(STAConstants.TWITTER_CONSUMER_KEY);        configurationBuilder                .setoAuthConsumerSecret(STAConstants.TWITTER_CONSUMER_SECRET);        // configuration required to fetch Feeds without login.        if (!withLoginConfig) {            configurationBuilder.setUseSSL(true);            // important: set T4J to use App-only authentication            configurationBuilder.setApplicationOnlyAuthEnabled(true);            configurationBuilder.setoAuth2TokenType(getoAuth2Token()                    .getTokenType());            configurationBuilder.setoAuth2Accesstoken(getoAuth2Token()                    .getAccesstoken());        }        Configuration configuration = configurationBuilder.build();        twitterFactory = new TwitterFactory(configuration);        twitter = twitterFactory.getInstance();        requestToken = null;    }

我也搜索了SO和其他网站上的解决方案,但没有得到任何解决方案.

任何帮助都非常感谢.

解决方法:

我做了很少的事情,终于找到了回答我自己的问题.因此张贴在这里.

Issue: No authentication challenges found

原因:登录后我没有在配置中发送Accesstoken和AccesstokenSecret.因此,它没有获得身份验证数据.

方案:

第1步:我使用仅限App的身份验证(无需登录Twitter)从twitter获取公共提要.我成功取了它们.为此我在配置中使用BearerToken如下:

   ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();   configurationBuilder.setoAuthConsumerKey(Constants.TWITTER_CONSUMER_KEY);   configurationBuilder.setoAuthConsumerSecret(Constants.TWITTER_CONSUMER_SECRET);   configurationBuilder.setUseSSL(true);   // important: set T4J to use App-only authentication   configurationBuilder.setApplicationOnlyAuthEnabled(true);   configurationBuilder.setoAuth2TokenType(getoAuth2Token().getTokenType());   configurationBuilder.setoAuth2Accesstoken(getoAuth2Token().getAccesstoken());

第2步:当我尝试回复或转发或将其标记为收藏时,我检查用户是否已登录,如果未登录,则先尝试登录,然后进行回复或转发.为此,我使用以下配置.

ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();configurationBuilder.setoAuthConsumerKey(Constants.TWITTER_CONSUMER_KEY);configurationBuilder.setoAuthConsumerSecret(Constants.TWITTER_CONSUMER_SECRET);

这将给我RequestToken,它反过来将给我Accesstoken和AccesstokenSecret.

步骤3:此后,我对后续请求使用以下配置,没有任何问题.

ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();configurationBuilder.setoAuthConsumerKey(Constants.TWITTER_CONSUMER_KEY);configurationBuilder.setoAuthConsumerSecret(Constants.TWITTER_CONSUMER_SECRET);configurationBuilder.setoAuthAccesstoken(getAccesstoken()); // from sharedPreferencesconfigurationBuilder.setoAuthAccesstokenSecret(getAccesstokenSecret()); // from sharedPreferences                           
总结

以上是内存溢出为你收集整理的android – 使用twitter4j库时没有发现身份验证问题全部内容,希望文章能够帮你解决android – 使用twitter4j库时没有发现身份验证问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1099783.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存