【问题标题】:Twitter integration in Android AppAndroid 应用程序中的 Twitter 集成
【发布时间】:2013-02-28 05:49:57
【问题描述】:

我在 Twitter 开发者网站上注册了我的应用程序并获得了一些 OAuth 凭据(消费者密钥、消费者秘密、请求令牌 URL 等)。我将回调 URL 留空。应用程序是为 IOS 和 Android 开发的。没有回调 url 应用程序在 IOS 中运行,但在 android 中无法运行。当我尝试过时

requestToken = twitter
                    .getOAuthRequestToken(Constants.TWITTER_CALLBACK_URL);

我得到了例外

02-28 10:52:27.337:W/System.err(666):401:身份验证凭据 (https://dev.twitter.com/pages/auth) 丢失或不正确。确保 您已设置有效的消费者密钥/秘密、访问令牌/秘密,以及 系统时钟同步。 02-28 10:52:27.337: W/System.err(666): 02-28 10:52:27.337: W/System.err(666): 02-28 10:52:27.337: W/System.err(666):
/oauth/request_token 02-28 10:52:27.337: W/System.err(666):桌面应用程序仅支持 oauth_callback 值 'oob'

那我试过没有回调url

requestToken = twitter
                    .getOAuthRequestToken();

当我尝试登录时,我被重定向到一个页面(仍在网络活动中),祝贺我已授予我的应用访问我的 Twitter 帐户的权限,并给了我一个 pin 以在需要的地方输入,而不是重定向到我的应用程序。

如何在没有回调 url 的情况下在 Android 中登录 Twitter? 提前致谢。

【问题讨论】:

  • 公共静态最终字符串 CALLBACK_URL = "twitterapp://connect";你试过这个...??
  • @AshishJani 而不是 Constants.TWITTER_CALLBACK_URL?注册时我没有提供回调 url。所以我总是收到异常 401:缺少身份验证凭据
  • 我使用了 CALLBACK_URL = "twitterapp://connect";对我来说很好,你可以在你的 TWITTER_CALLBACK_URL 中尝试一下
  • @AshishJani 您在 Twitter 中注册应用时是否提供了任何回调 url

标签: android twitter4j


【解决方案1】:
  1. 创建您自己的 WebViewClient 子类。

2.覆盖 shouldOverrideUrlLoading(WebView view, String url) 方法。

3.在 shouldOverrideUrlLoading() 中,检查 url.startsWith(YOUR_CALLBACK_URL) 是否为真。

4.如果为true,则从URL中检索“oauth_verifier”参数并返回true(来自shouldOverrideUrlLoading()的true会阻止WebView实例加载URL)。

使用步骤 4 中获取的参数值获取访问令牌。 在第 4 步之后,您的应用程序可以从 WebView 实例中取回控制权。

如果上述步骤听起来很麻烦,请尝试 TwitterOAuthView。它的用法非常简单。只需拨打电话

view.start(CONSUMER_KEY, CONSUMER_SECRET, CALLBACK_URL, true, listener); 并通过如下定义的 TwitterOAuthView.Listener 接口接收结果。

void onSuccess(TwitterOAuthView view, AccessToken accessToken); void onFailure(TwitterOAuthView 视图,TwitterOAuthView.Result 结果); 如果将 TwitterOAuthView.start() 方法作为第四个参数赋予 true,则 TwitterOAuthView 不会访问回调 URL,我认为这种行为是您想要实现的。源代码 TwitterOAuthView.java 可能会有所帮助。

【讨论】:

  • 但是注册的时候没有提供回调地址,那么如何查看回调地址呢?
  • 看看试试 CALLBACK_URL = "twitterapp://connect" 就够了。否则请创建新凭据并设置回调 URL。
  • 我试过 requestToken = twitter .getOAuthRequestToken(Constants.TWITTER_CALLBACK_URL);其中 public static final String TWITTER_CALLBACK_URL = "twitterapp://connect";并得到异常 02-28 15:44:56.757: W/System.err(1599): 401:Authentication credentials (dev.twitter.com/pages/auth) 丢失或不正确。确保您设置了有效的消费者密钥/秘密、访问令牌/秘密,并且系统时钟同步。
猜你喜欢
  • 1970-01-01
  • 2011-06-29
  • 2011-06-24
  • 2014-08-11
  • 1970-01-01
  • 2015-06-14
  • 2011-11-03
  • 1970-01-01
  • 2016-06-01
相关资源
最近更新 更多