【问题标题】:Twitter API not accepting callback URL for Android AppTwitter API 不接受 Android 应用的回调 URL
【发布时间】:2011-09-04 00:31:14
【问题描述】:

我从 www.marakana.com 下载了 OAuthDemo Android 应用程序。它适用于他们包含的密钥/秘密和回调 url。我阅读了 twitter OAuth API 并为我的 Android 代码注册了一个浏览器类型的应用程序,并将回调 url 设置为 www.mysite.com,读取和写入一般访问权限并获得了我的密钥/秘密。

但是,当我用我的替换原始 OAuthDemo 中的密钥/秘密时,我得到一个身份验证错误:

05-27 14:40:25.964: WARN/System.err(441):     oauth.signpost.exception.OAuthCommunicationException: Communication with the service provider failed: https://api.twitter.com/oauth/request_token
05-27 14:40:25.974: WARN/System.err(441):     at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:214)
05-27 14:40:25.974: WARN/System.err(441):     at oauth.signpost.AbstractOAuthProvider.retrieveRequestToken(AbstractOAuthProvider.java:69)
05-27 14:40:25.974: WARN/System.err(441):     at com.marakana.oauth.MainActivity$OAuthAuthorizeTask.doInBackground(MainActivity.java:116)
05-27 14:40:25.974: WARN/System.err(441):     at com.marakana.oauth.MainActivity$OAuthAuthorizeTask.doInBackground(MainActivity.java:1)
05-27 14:40:25.974: WARN/System.err(441):     at android.os.AsyncTask$2.call(AsyncTask.java:252)
05-27 14:40:25.974: WARN/System.err(441):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
05-27 14:40:25.974: WARN/System.err(441):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
05-27 14:40:25.974: WARN/System.err(441):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1081)
05-27 14:40:25.974: WARN/System.err(441):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:574)
05-27 14:40:25.974: WARN/System.err(441):     at java.lang.Thread.run(Thread.java:1020)
05-27 14:40:25.984: WARN/System.err(441): Caused by: java.io.FileNotFoundException: https://api.twitter.com/oauth/request_token
05-27 14:40:25.984: WARN/System.err(441):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:532)
05-27 14:40:25.984: WARN/System.err(441):     at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:283)
05-27 14:40:25.984: WARN/System.err(441):     at oauth.signpost.basic.HttpURLConnectionResponseAdapter.getContent(HttpURLConnectionResponseAdapter.java:18)
05-27 14:40:25.984: WARN/System.err(441):     at oauth.signpost.AbstractOAuthProvider.handleUnexpectedResponse(AbstractOAuthProvider.java:228)
05-27 14:40:25.984: WARN/System.err(441):     at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:189)
05-27 14:40:25.984: WARN/System.err(441):     ... 9 more
05-27 14:40:29.113: WARN/InputManagerService(73): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@408df318 (uid=10035 pid=441)
05-27 14:40:29.133: WARN/IInputConnectionWrapper(441): showStatusIcon on inactive InputConnection

代码位于这里...https://gist.github.com/996219

我在 Stackoverflow.com 中发现了这些相关问题: 1.OAuth + Twitter on Android: Callback fails 2.oauth_callback on Android

到了这个地步:

这是否意味着我可以在 dev.twitter.com 站点中输入回调 url:www.mysite.com,然后在我的 android 代码中输入 oauth_callback_url = "myappname";

我正在使用 jtwitter,它需要一个构成 url 一部分的方案。那应该是什么样子?我试过了:

private static final String OAUTH_CALLBACK_URL = "http://www.santiapps.com";
private static final String OAUTH_CALLBACK_SCHEME = OAUTH_CALLBACK_URL + "://callback";

但这也没有用。请帮助我了解我做错了什么?

【问题讨论】:

  • 感谢 Varun,我在阅读了您的评论后阅读了常见问题解答,我去查看了我的问题的答案并接受了正确的答案。谢谢!

标签: android twitter


【解决方案1】:

问题似乎是我将我的应用程序配置为客户端,并且它必须是浏览器类型,即使它是 android 上的本机客户端应用程序。

【讨论】:

  • 如何知道应用程序的配置..请帮助..在那里找不到选项..努力完成它..同样的问题..
  • 转到 dev.twitter.com 并选择您的应用以修改其属性
【解决方案2】:

在注册您的 twitter 应用程序时必须指定回调到另一个站点(在回调(浏览器类型)中),并且您的代码中的回调必须与您在清单文件中指定的相同,在标记下..

【讨论】:

    【解决方案3】:

    我遇到了同样的问题。因为我知道 URL 很好,所以我做了一个数据包捕获。服务器的响应是:

    <?xml version="1.0" encoding="UTF-8"?>
    <hash>
      <error>Desktop applications only support the oauth_callback value 'oob'</error>
      <request>/oauth/request_token</request>
    </hash>
    

    对我来说,问题是 Twitter 应用程序设置中的应用程序类型需要设置为“浏览器”。问题是 twitter 改变了他们的界面并删除了应用程序类型。您需要在应用程序设置页面中指定回调 URL 以将其隐式切换为浏览器类型。

    【讨论】:

      【解决方案4】:

      即使我遇到了同样的问题,但我通过在 twitter 上注册我的应用程序时将“https://www.google.com”添加到 CALLBACK_URL 字段来解决它。实际上我认为提供一个有效的 url 会使应用程序浏览器应用程序,否则它仍然是一个桌面应用程序......

      【讨论】:

      • 你在 .java 类的回调中给出了什么
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2012-08-25
      • 2012-05-26
      • 1970-01-01
      相关资源
      最近更新 更多