如何在jQueryMobile应用程序内通过Foursquare OAuth2进行身份验证无用户代理流

问题描述

| 我正在使用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
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...