2011-08-05 35 views
2

我想在我的应用程序中集成雅虎。我想,未能检索雅虎集成在android中的请求令牌?

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(未找到)

为什么我们不能检索请求令牌。

+0

嗨,我得到一个类似的错误,你解决了这个问题? – Kavitha

+0

@ KC203不,我仍然在尝试... ...与404错误卡住.... – Panache

+0

感谢您的答复,我已经看到了几个论坛,每个人似乎都有这个问题,我怀疑现在是否也有可能。无论如何,让我知道,如果你成功整合yahoo – Kavitha

回答

3
  1. 确保您在雅虎的应用程序已注册为基于Web的应用程序。当您注册为基于Web的应用程序时,请提供您选择的有效应用程序URL和应用程序域(两者应该是相同的域),但尚未被其他人使用。例如,我拥有我拥有的网站的网址。这也将用作消费者的回调网址。
  2. 而不是调用“MyApp:// oauth”,给一个有效的http回调url(与您用来注册该应用程序的那个相同)。有了这些,上面的代码应该可以工作。
  3. 打开一个新的Webview并调用authUrl。一旦你的应用程序被授权,通过覆盖“onPageStarted”方法拦截对应用程序url的调用。在那里,通过启动指向“MyApp:// oauth”的新意向对您的应用程序进行回调。

请让我知道如果任何obove步骤混淆你 - 我很乐意提供帮助。

+0

感谢您的回复。我有一些问题,1.为什么我们必须注册为基于Web的应用程序,我们是否可以选择基于客户端的应用程序? 2.我尝试使用基于Web的应用程序URL和应用程序域,但没有得到提及的内容。 PLZ你会发布一些相同的步骤...谢谢先生。 – Panache

+1

我编辑了我的答案,以包含您需要给予的应用程序url和应用程序域。您可以提供基于桌面的,但在这种情况下,在验证之后,用户必须复制代码,并在验证完成后将其粘贴到应用程序中。如果您希望在没有任何复制粘贴的情况下实现无缝集成,则需要遵循基于Web的身份验证模型。请让我知道,如果你有任何问题。 –

+0

你可以发布一些工作代码吗?这将帮助我获得工作。 – Panache

1

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

感谢您的