雅虎移动设备OAuth登录界面

15
这是我在Yahoo!论坛上发布问题的转载。只是我更频繁地参考StackOverflow ...
我的问题如下:虽然Yahoo!OAuth在http://developer.yahoo.com/oauth/中被描述为适用于移动电话的开箱即用,但似乎并不是这样。
我尝试实现示例应用程序并使用Yahoo!PHP SDK连接到Yahoo! 在使用Web浏览器时很容易。 但是,在测试移动电话(Nokia 6300)访问Yahoo!request_auth页面(http://developer.yahoo.com/oauth/guide/oauth-userauth.html)时,它的呈现效果不良:我无法看到登录框,也无法阅读为什么需要登录的信息等。我只能看到页面边框和一些文本片段(“Yahoo!”、“Hel”(如帮助...)等)
有没有一些参数可以强制Yahoo!显示手机优化页面? 目前我将用户重定向到此地址: https://api.login.yahoo.com/oauth/v2/request_auth 顺便说一句:如果我使用Opera Mini-它可以很好地呈现页面,尽管省略了关于我的站点(请求登录)的信息。 只是我不能强制所有用户使用Opera或其他浏览器。
感谢您提前的任何帮助。

你解决了这个问题吗? - Nick Siderakis
1
@NickSiderakis - 不好意思,我必须承认我没有这样做过。 在我迁移到新的API之后,有些东西略有变化,尽管我仍然能够重现这种行为,并且据我所知,雅虎公司并没有做出任何回应。 - Justas Butkus
3个回答

4

我整天在寻找解决方案,最终偶然发现了这个:http://pastebin.com/8tDnrfLc

以下是重要部分:

var authPageURL = "https://api.login.yahoo.com/oauth/v2/request_auth?oauth_token=" + oauthToken;
var yahooMobileLoginUrl = "https://login.yahoo.com/m?&.src=oauth&.lang=en-us&.intl=us&.done=" + authPageURL;

基本上,您将用户引导到移动身份验证页面,并在完成后给出一个URL。该URL应为原始的https://api.login.yahoo.com/oauth/v2/request_auth?oauth_token=... URL。
对我来说很有效!

这实际上是新的OAuth 2.0版本,它具有用于Web登录的移动版本。然而,OP正在谈论OAuth 1.0a,似乎没有Web移动页面。不幸的是,OAuth 2.0与某些Yahoo API(例如YQL)不兼容。 - Michael Ho Chum
没事,我刚刚用OAuth 1.0a测试了你的技巧,很聪明!点赞。 - Michael Ho Chum
谢谢,这非常有帮助。雅虎应该感到尴尬,因为这种黑客攻击甚至是必要的。但仍然不是很好的用户体验,因为登录后出现的批准页面在移动设备上格式不正确。 - Mason G. Zhwiti

1

Yahoo! 毫无疑问有一个用户代理嗅探算法来确定什么构成了移动浏览器。显然 Opera Mini 触发了正确的行为。我怀疑你使用的 Nokia 型号中的原生浏览器不在列表中,或者它正在模拟桌面浏览器的用户代理。不幸的是,我认为你需要说服 Yahoo! 将你的 Nokia 6300 视为移动设备。


我认为OperaMini可能会自行转换页面。据我记得,使用它时出现了一些渲染错误。 - Justas Butkus
我也看到Facebook这样做了。:'( - nmr

0

也许可以通过修改用户代理来让Yahoo!认为浏览器是Opera mini?


我怎样才能让所有的客户端都这么做呢?他们有成千上万种不同的设备......我认为这应该是_Yahoo!_的调用参数。 - Justas Butkus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接