如何在 jQueryMobile 应用程序中使用 Foursquare OAuth2 进行身份验证(无用户代理流程)

发布于 2024-11-09 21:13:24 字数 213 浏览 0 评论 0原文

我正在使用 jQueryMobile 构建一个移动应用程序,并且打算通过 PhoneGap 将其部署到 iPhone 上。

我的问题是:如何在 jQueryMobile 应用程序中使用 OAuth2 协议通过 Foursquare 验证自己的身份?一种解决方案是使用 OAuth2 的用户代理流程,但这会迫使 iPhone 启动 Safari,从而不会停留在应用程序中。还有比这更好的解决方案吗?

I am building a mobile app with jQueryMobile and I intend to deploy it onto iPhone thanks to PhoneGap.

My question is : how can I authenticate myself with Foursquare using the OAuth2 protocol in my jQueryMobile app ? One solution would be to use the useragent flow of OAuth2 but this would force the iPhone to launch Safari and thus not stay within the app. Are there any better solutions than this ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

蒗幽 2024-11-16 21:13:24

对于基于 iPhone 或客户端应用程序(例如 PhoneGap 中的应用程序),
Foursquare 推荐其中一种方法。

  • 如果您没有实质性的服务器代码,您可以嵌入网络浏览器并使用令牌流,将用户重定向到您域中的虚拟页面。然后,您可以从 URL 中获取令牌并关闭浏览器。我们有示例 AndroidiOS 代码供您参考。
  • 如果您的应用程序中有服务器,则可以使用上面的服务器流程(可能在嵌入式浏览器中)。与 Facebook API 类似,您可以将 display=touch 添加到授权或身份验证 URL 以获得移动优化的界面。
  • 上述方法的替代方法是使用服务器流和外部浏览器,但重定向到自定义 URI 处理程序,将用户带回我们的应用程序。您可以将机密嵌入到您的应用程序中,并将提供的代码交换为访问令牌。如果您将客户端密钥包含在已发布的代码中,请采取措施对其进行混淆,并准备好在需要时轮换它。

https://developer.foursquare.com/docs/oauth.html< /p>

这可能是使用 PhoneGap 的 ClientBrowser 插件进行处理,或者只是将他们提供的示例代码调整到 PhoneGap 插件中。

For an iPhone-based or client-side application like you would have in PhoneGap,
Foursquare recommends one of these methods.

  • If you have no substantive server code, you can embed a web browser and use the token flow, redirecting the user to a dummy page on your domain. You can then grab the token off of the URL and close the browser. We have sample Android and iOS code for your reference.
  • If you have a server as part of your application, you can use the server flow above, possibly in an embedded browser. Similar to the Facebook API, you can add display=touch to your authorize or authenticate URLs to get a mobile optimized interface.
  • An alternative to the above is to use the server flow and an external browser, but redirect to a custom URI handler that brings the user back to our application. You can embed the secret in your application and exchange the provided code for an access token. PLEASE take steps to obfuscate your client secret if you include it in released code, and be prepared to rotate it if needed.

https://developer.foursquare.com/docs/oauth.html

This could probably be handled with the ClientBrowser plugin for PhoneGap or just adapting the sample code they have provided into PhoneGap plugins.

如歌彻婉言 2024-11-16 21:13:24

OAuth2 的核心意图之一是不允许像我们过去使用 XAuth 那样进行无浏览器身份验证流程。服务提供商希望消费者看到他们正在签署哪些权限,并希望控制该过程。

我对 Phonegap 的经验不是很丰富,因为我是一名本地开发人员,但如果有一种方法可以实例化 UIWebView 并将其显示给用户,那么您至少可以将 Web 交互保留在应用程序的“内部”。鉴于phonegap基本上显示了一个UIWebView,这应该是可能的。可以使用以下命令检查 UIWebView 中 html 的来源

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script

One of the core intentions of OAuth2 is to not allow browserless authentication flow like we did with XAuth in the past. Service providers want consumers to see what permissions they are signing off on, and want control of that process.

I'm not very experienced with Phonegap, as I'm a native developer, but if there's a way of instantiating a UIWebView and showing it to the user, you could at least keep the web interaction 'inside' of the application. Given phonegap is basically showing a UIWebView this should be possible. It is possible to examine the source of the html within a UIWebView using

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文