Ric*_*ick 3 iphone authentication rest facebook web-services
我正在开发一个iOS应用程序,使用Facebook身份验证让用户登录应用程序,然后该应用程序与Python REST Web服务进行交互.
一旦用户使用Facebook凭据登录应用程序,我应该使用什么策略来验证Web服务调用?
将身份验证令牌发送到您的REST Web服务,然后让REST Web服务使用fb(facebook)进行检查.
用户登录应用后,您将获得身份验证令牌.
将令牌和fb用户ID发送给您的REST Web服务.
您的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)如果它有效,你会收回一个用户.
验证用户ID(来自fb和步骤2中的帖子).如果它是相同的,那么你就拥有了一个经过身份验证的用户.
将身份验证令牌和时间戳存储在您服务器上的本地数据库中,这样您就不必再通过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