iphone - 如何验证使用 Facebook 验证用户身份的 Web 服务调用?

标签 iphone web-services authentication rest facebook

我正在开发一个 iOS 应用程序,该应用程序使用 Facebook 身份验证让用户登录该应用程序,然后该应用程序与 Python REST Web 服务进行交互。

用户使用 Facebook 凭据登录应用后,我应该使用什么策略来验证 Web 服务调用?

最佳答案

将身份验证 token 发送到您的 REST Web 服务,并让 REST Web 服务通过 fb (facebook) 检查它。

  1. 用户登录应用后,您将获得身份验证 token 。

  2. 将 token 和 fb 用户 ID 发送到您的 REST Web 服务。

  3. 您的 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;
    }
    
  4. 如果有效,您将获得一个用户。

  5. 验证用户 ID(来自 Facebook 和步骤 2 中的帖子)。如果相同,您就拥有了经过身份验证的用户。

  6. 将身份验证 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/

相关文章:

ios - 使用多个 View Controller 堆栈处理方向

iphone - MFMailComposeViewController 不从 View 中关闭

iphone - 如何在 iPhone 中设置 CLRegion 的颜色

android - 在 Android 的 webservice Rest 中读取 Json。 FileNotFoundException异常

javascript - Sencha 触摸 : Get datastore json data into selectfield

javascript - ReactJS - 渲染前等待第三方脚本响应

iphone - 带有 subview 的可变 UITableCellView 高度

java - 保持远程 EJB 和 Web 服务的状态

Angular 7 组件重定向,无需路由

python - Google Calendar API - 通过服务帐户访问自己的日历