移动设备的OAuth回调流程

4
我正在为黑莓移动设备设计Netflix应用程序,目前在处理OAuth。我已经能够在应用程序中的嵌入式浏览器字段中生成Netflix登录页面。
用户登录后,Netflix将从登录页面发送用户到指定的回调URL。回调URL还将包含授权令牌,然后需要将其发送回Netflix。
我的问题是:我应该如何在移动设备上执行此操作?是否有一套流程?我不确定如何从回调URL中提取授权令牌并将其发送回我的应用程序。根据我的研究,似乎Netflix不会为用户提供PIN /验证器,以便用户可以输入应用程序中...
有任何想法吗?
谢谢...

哪种移动设备?对于黑莓,您可以使用j2me-oauth。 - Saurabh Wadhwa
3个回答

4

在移动设备上处理回调的方法有两种。第一种是将oauth_callback的值设置为“oob”。如果您的设备无法接收回调,则需要这样做。请参见OAuth规范第2.1节:

临时凭证

使用“oob”应该会导致服务器(Netflix)显示一个验证码,然后用户将该验证码输入到您的应用程序中以授权请求标记。

第二种方法,如果您的设备支持,则可以使用自定义URI方案。我知道在iPhone上,您可以向分配给您的应用程序的自定义方案注册回调。在BlackBerry上是否有这样做的方法?如果有的话,我会使用这个方法,因为它可以提供更好的用户体验。


感谢您的帮助,保罗。我不认为我可以使用自定义URI方案。我尝试将oauth_callback设置为“oob”,在Netflix登录页面登录后,唯一出现的是一个“转到Netflix”按钮,它将我带到了Netflix网站... - littleK
1
嗨,behrk2。如果BlackBerry不支持自定义URI方案,而Netflix不支持超出边界的回调,那么看起来你可能需要向Netflix寻求帮助。你是否尝试在他们的支持论坛上发布帖子,询问他们对于无法接受回调的设备有什么建议? - Paul Osman
顺便提一下,在Netflix论坛中有一个OAuth主题的链接:http://developer.netflix.com/forum/read/27647 - Paul Osman
1
看起来有人回复了你的帖子:http://developer.netflix.com/forum/read/64879所以,如果他们只支持OAuth 1.0(而不是1.0a),那么你在oob配置方面就没有什么好运气了。我建议你遵循Netflix论坛上给你的建议。将回调URL设置为你托管的某个页面,该页面指示用户重新启动你的应用程序...重新启动后,交换请求令牌(现在已经授权)以获取访问令牌,然后你就可以开始使用了。这很笨拙,但如果没有注册uri方案或oob支持,那么你真的只能这样做。 - Paul Osman
1
我很惊讶他们不支持1.0a。他们已经有超过6个月的时间来做了。你肯定可以向用户展示一个按钮,告诉他们已经授权了令牌。当他们点击按钮时,你会尝试用请求令牌交换访问令牌。如果失败了,你就必须重新开始这个过程(请求访问令牌,将用户引导到授权终点等)。我同意按钮方法比重新启动应用程序更好的用户体验。 - Paul Osman
显示剩余2条评论

2

与其嵌入BrowserField,您最好通过让移动应用程序完成与Netflix的所有必要握手来创建无缝(即没有浏览器)的用户体验。您需要设置一个公共域服务器作为OAuth的回调主机,并协商您的新会话密钥/秘密密钥并将其传递回您的设备。

同时,设备将需要保持与您的公共服务器的开放HTTP连接,以便最终接收凭据并直接从Netflix请求用户数据。

整个往返时间不应超过大约15秒,因此HTTP超时不应成为问题。

您需要首先学习(即“屏幕抓取”)Netflix登录HTML页面,以提取必要/相关的HTML表单参数名称等。

祝你好运。


这个想法让我很感兴趣。我过去曾考虑过它,但不确定如何实施。我会尝试一下。谢谢! - littleK
1
这种方法是否违背了OAuth的主要目的之一--防止用户需要将其用户名/密码传递给第三方服务器? - Matthew


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