无法在Android中检索yahoo集成的请求令牌?

时间:2011-08-05 18:00:42

标签: android yahoo signpost

我想在我的应用程序中集成雅虎。我在努力,

private static final String YAHOO_CALLBACK_URI = "MyApp://oauth";
public static final String YAHOO_REQUEST_TOKEN_URL = "http://api.login.yahoo.com/oauth/request_token";//api.login.yahoo.com
public static final String YAHOO_ACCESS_TOKEN_URL = "http://api.login.yahoo.com/oauth/access_token";
public static final String YAHOO_AUTHORIZE_URL = "http://api.login.yahoo.com/authorize";


CommonsHttpOAuthConsumer consumer = new CommonsHttpOAuthConsumer(YAHOO_CONSUMER_KEY, YAHOO_CONSUMER_SERECT_KEY);
    OAuthProvider provider = new CommonsHttpOAuthProvider(YAHOO_REQUEST_TOKEN_URL, YAHOO_ACCESS_TOKEN_URL, YAHOO_AUTHORIZE_URL);
    provider.setOAuth10a(true);
    try {
        String authUrl = provider.retrieveRequestToken(consumer, YAHOO_CALLBACK_URI);// Can I pass Null for callback url.
        System.out.println("AuthURL = " + authUrl);
    } catch (OAuthMessageSignerException e) {
        e.printStackTrace();
    } catch (OAuthNotAuthorizedException e) {
        e.printStackTrace();
    } catch (OAuthExpectationFailedException e) {
        e.printStackTrace();
    } catch (OAuthCommunicationException e) {
        e.printStackTrace();
    }

获得

oauth.signpost.exception.OAuthCommunicationException:与服务提供商的通信失败:服务提供商错误地回复:404(未找到)

为什么我们无法检索请求令牌。

2 个答案:

答案 0 :(得分:3)

  1. 确保您在Yahoo上的应用注册为基于网络。当您注册为基于Web的应用程序时,请提供您选择的有效应用程序URL和应用程序域(两者都应该是同一个域),但其他任何人都没有使用过。例如,我拥有我拥有的网站的网址。这也将用作您的消费者中的回调网址。
  2. 不要调用“MyApp:// oauth”,而是提供有效的http回调网址(与用于注册应用的网址相同)。有了这么多,上面的代码应该可以工作。
  3. 打开一个新的Webview并调用authUrl。一旦您的应用程序获得授权,请通过覆盖“onPageStarted”方法拦截对您的应用程序URL的调用。在那里,通过启动指向“MyApp:// oauth”的新意图对您的应用程序进行回调。
  4. 如果任何令人困惑的步骤让你感到困惑,请告诉我 - 我非常乐意提供帮助。

答案 1 :(得分:1)

我按照上面提到的3#poits并且能够回拨给应用程序。整个问题始于YAHOO OAUTH Process。现在雅虎没有采取自定义回拨网址,它必须是一个有效的http网址。 ñ 我有几个问题,我自己解决,比如有一个CUSTOMi对话框,可以用来调用类似于FB Dialog的Web-view YAHOO Auth URL。

感谢