如何验证使用Facebook验证用户的Web服务调用?

Ric*_*ick 3 iphone authentication rest facebook web-services

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

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

Tie*_*eme 6

将身份验证令牌发送到您的REST Web服务,然后让REST Web服务使用fb(facebook)进行检查.

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

  2. 将令牌和fb用户ID发送给您的REST Web服务.

  3. 您的Web服务应验证令牌是否有效(这涉及对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;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 如果它有效,你会收回一个用户.

  5. 验证用户ID(来自fb和步骤2中的帖子).如果它是相同的,那么你就拥有了一个经过身份验证的用户.

  6. 将身份验证令牌和时间戳存储在您服务器上的本地数据库中,这样您就不必再通过ander调用facebook了.当用户重新登录时,您可以检查身份验证令牌和时间(仅有效x小时)并授予权限,而无需使用Facebook检查令牌.请注意,在此期间用户可能会撤销fb权限.

祝好运.

评论问题的更新:

当然,请查看从谷歌的开发者文档验证令牌.它是为(类似javascript)客户端应用程序编写的,但这并不重要.你可以用php或python调用url.

最后你会打电话给:

https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=##ADD_TOKEN_HERE##
Run Code Online (Sandbox Code Playgroud)

您还可以阅读Google提供的关于从已安装的应用中使用Google登录并使用Google从网络服务器进行控制的2个文档.

https://developers.google.com/accounts/docs/OAuth2InstalledApp https://developers.google.com/accounts/docs/OAuth2WebServer