我正在开发一个 iOS 应用程序,该应用程序使用 Facebook 身份验证让用户登录该应用程序,然后该应用程序与 Python REST Web 服务进行交互。
用户使用 Facebook 凭据登录应用后,我应该使用什么策略来验证 Web 服务调用?
最佳答案
将身份验证 token 发送到您的 REST Web 服务,并让 REST Web 服务通过 fb (facebook) 检查它。
用户登录应用后,您将获得身份验证 token 。
将 token 和 fb 用户 ID 发送到您的 REST Web 服务。
您的 Web 服务应验证 token 是否有效(这涉及对 fb 的服务器-服务器 API 调用)。
我使用了 php 和这段代码,但 python 看起来应该是一样的。
function checkFacebookLogin($acces_token) { $url = "https://graph.facebook.com/me?access_token=" . strip_tags($acces_token); $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 5); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); $response = curl_exec($ch); curl_close($ch); $user = json_decode($response); return $user; }
如果有效,您将获得一个用户。
验证用户 ID(来自 Facebook 和步骤 2 中的帖子)。如果相同,您就拥有了经过身份验证的用户。
将身份验证 token 和时间戳存储在服务器上的本地数据库中,这样您就不必一遍又一遍地调用 Facebook。当用户重新登录时,您可以检查身份验证 token 和时间(仅 x 小时有效)并授予权限,而无需使用 facebook 检查 token 。请注意,用户可能会同时撤销 Facebook 权限。
祝你好运。
评论问题的更新:
当然,请查看validating the token来自谷歌的开发人员文档。它是为(类似 JavaScript)客户端应用程序编写的,但这并不重要。您可以使用 php 或 python 调用 url。
最后你会调用类似的东西:
https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=##ADD_TOKEN_HERE##
您还可以阅读 Google 提供的关于从已安装的应用程序登录 google 以及从网络服务器连接 google 的这两篇文档。
https://developers.google.com/accounts/docs/OAuth2InstalledApp https://developers.google.com/accounts/docs/OAuth2WebServer
关于iphone - 如何验证使用 Facebook 验证用户身份的 Web 服务调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7943543/