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