0

我已经在 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'

然后我试过没有回调网址

requestToken = twitter
                    .getOAuthRequestToken();

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

如何在 Android 中不使用回调 url 登录 Twitter?提前致谢。

4

1 回答 1

0
  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 可能会有所帮助。

于 2013-02-28T06:05:37.590 回答