问题描述
|
我正在使用jQueryMobile构建移动应用程序,并且由于PhoneGap的缘故,我打算将其部署到iPhone上。
我的问题是:如何使用jQueryMobile应用程序中的OAuth2协议对Foursquare进行身份验证?一种解决方案是使用OAuth2的useragent流程,但这将迫使iPhone启动Safari,因此不留在应用程序内。有没有比这更好的解决方案了?
解决方法
对于像iPhone一样的基于iPhone或客户端的应用程序,
Foursquare建议使用这些方法之一。
如果没有实质性的服务器代码,则可以嵌入Web浏览器并使用令牌流,将用户重定向到您域上的虚拟页面。然后,您可以从URL中获取令牌并关闭浏览器。我们提供了示例Android和iOS代码供您参考。
如果您将服务器作为应用程序的一部分,则可以在嵌入式浏览器中使用上述服务器流。与Facebook API相似,您可以将display = touch添加到您的授权或身份验证URL中,以获取针对移动设备进行优化的界面。
替代方法是使用服务器流和外部浏览器,但重定向到自定义URI处理程序,该处理程序将用户带回我们的应用程序。您可以将机密嵌入应用程序中,并将提供的代码交换为访问令牌。如果您将客户端机密包含在已发布的代码中,请采取措施来混淆您的客户端机密,并准备在需要时对其进行轮换。
https://developer.foursquare.com/docs/oauth.html
这可能可以通过PhoneGap的ClientBrowser插件来处理,也可以仅修改它们提供给PhoneGap插件的示例代码。
,OAuth2的核心意图之一就是不允许像过去使用XAuth一样进行无浏览器身份验证。服务提供商希望消费者查看他们正在签名的权限,并希望对该过程进行控制。
作为本地开发人员,我对Phonegap不太熟悉,但是如果有一种实例化UIWebView并将其显示给用户的方法,则至少可以将Web交互保持在“内部”应用程序。鉴于phonegap基本上显示了UIWebView,这应该是可能的。可以使用以下方法检查UIWebView中的html源
- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script