我想在我的Android应用程序中集成雅虎来获取雅虎联系人。我使用雅虎联系人API打开WebView登录。当我使用ouath程序从yahoo导入联系人时,使用签名方法HMAC-SHA1。我遇到问题“签名无效。”
如果我使用签名方法“PLAINTEXT”,它在oauth身份验证期间工作正常,在使用yahoo社交API时,它会导致签名类型无效。对这个问题有什么看法吗?
我想要一些其他方式,我不需要向用户显示webview,并且身份验证在后台进行。登录后,我必须登录用户的联系人。任何想法...... ???
============================================== < / p>
以下是我收到的请求和回复:
第一次请求: -
响应第一次请求: -
组oauth_token = kkdhque&安培; oauth_token_secret = 43afb117c8880535d40d91ab6eb1cd9cf070b6bb&安培; oauth_expires_in = 3600&安培; xoauth_request_auth_url = HTTPS%3A%2F%2Fapi.login.yahoo.com%2Foauth%2Fv2%2Frequest_auth%3Foauth_token%3Dkkdhque&安培; oauth_callback_confirmed =真
用户在webview中输入用户名和密码的第二个请求。
https://api.login.yahoo.com/oauth/v2/request_auth?oauth_token=k3qacet
用户验证此应用程序可以在webview中使用我的电子邮件地址的第三个请求。
这导致了oauth验证者。
完成webview并且用户获得访问令牌或(oauth_token)
的第四个请求响应第四次请求: -
组oauth_token = A%3DhX_2we7E7jDnmFyp_8sBq2jECdy3Qq3joNFqb6S70DcHwqh81q19r3KFvSljXFrjVjk3gw8UOkMcvs7sYNdZzbTDQhwYyPswES1HRhBv94wYFmCclOmXCL.XNOCgNQWkKbHha0puKPRnSY12tKASSPdmqYdynuw5c72sL6mb89Ord7hFmkn7mOqKeB5E0R.H1oM1vkxIc2_x3nhifZvHP1gHxG8rm3I2Qh4PsXl3sTeAOVp7xGjOVELdqjX4rxlvXwAHW8OHrZLniCiNNqtb9yhEDBGutFyos0gQikBZ3FQjS04Q0X6Vz53FwN58GWS6ok1IpppwYSaXVGxf6T3mtGZo90lNugbCAho5H9frYkV3dq9xM.LIiBdA3nPEJfef3ZCciNSYHtk_0_k3jSChDIiDuKwx4wwaHUSygZq0cOSWGV6iWdnc9qitu7xLLzzO5YDFStmkZK2ks144RLVookPqsPOHew.zovCcPup3oG3bOq4FKR9UAXaIfqtj6bMNauBpFiTmy8r9WIKJ5lKCJZux1oqCHECpSjhK98P2vTqVv08jU3.S15W6dPro9lwOVeMStacATvWE0wVumeOhg54.190zTvWxaCyNBSVKuKxlsOc8cDY6o_qhFtf.hiWLisVHKOpGkMhsdpECuaYaCSDGkNO8iEEcGE5nAS1VHbuxWl6TW1pRQxBUrDQWZiO.FPKAFQhz5gNjSbE14ygihPQVYYe_vJ0D.wdsOk4VY.aKovCe10vTl5N9t58ZhqJIH7pviYRuS8U- &安培; oauth_token_secret = 50f8b0c3742c653270f4ab171e344a6cb525eca5&安培; oauth_expires_in = 3600 &安培; oauth_session_handle = AGgtEE.0Q98PruZjCCh2K9YIlCw_faQSJbrMRUeMzledZ.Tgqrg-&安培; oauth_authorization_expires_in = 820695219&安培; xoauth_yahoo_guid = NNZ4BOGR43W5RY6LMEXJVUZYUE
第五个请求是为了获得我最终想要ithis的用户的联系人列表。
第五次请求的回复
{ 错误:{ 郎:“en-US”, 说明:“请提供有效的凭证.OAuth oauth_problem =”签名无效“,realm =”yahooapis.com“” } }
答案 0 :(得分:1)
如果您的签名无效,您的OAuth请求很可能是错误签名的。 OAuth 1.0a及以下版本确实令人头疼。 Alhamdulillaah他们正在研究AOuth2.0,它可以清除很多延迟。
如果您不介意发布OAuth签名库,授权标头和请求,我可以帮助您详细说明。我看到人们犯的最常见的错误是他们使用非GMT时间戳,他们使用返回令牌的一部分由于解析错误(你可能不必担心这个,因为雅虎令牌非常干净[A-za-z0 -9]但不是每个人都是这样 - 无论哪种方式,在登录过程的第一步手动查看您的响应并确保您的代码正在解析整个标头),同时确保您在所有REST的验证程序中发送请求,是您必须键入以登录的验证程序。其他时候,我看到人们的HMCA算法无法正常工作,或者他们忘记正确对其已签名变量的Base64版本进行URL编码......还有什么...所有...想到这一点。已经有一段时间了。
向右移动,没有理由要求webview。发送和接收的信息只是HTML代码,因此您可以自己解析或使用2.9mil google结果中的任何html解析器。您需要一个Web浏览器的仅步骤是用户登录他们的Yahoo帐户,甚至该步骤可以通过解析页面并获取自动[1] cb2_authenticity_token或类似的,然后将其提交到HTML [form]中的地址。它会将您带回验证者的页面发回给您,您也可以解析它,我已经成功地使用了Twitter。
无论如何,发布一些代码,我们可以为您提供进一步的帮助。
[1]编辑说明,你必须拥有雅虎L / P才能实现自动化。