我们允许用户仅使用facebook访问令牌作为凭证来访问我们的后端(使用带有json回复的https的REST api),因此我们想做两件事:
-
验证访问令牌并找到用户的ID - 这只是对https://graph.facebook.com/me?access_token=TOKEN的调用
-
确保此访问令牌属于我们的Facebook应用程序 . 您可以调用https://graph.facebook.com/app?access_token=TOKEN,但这似乎是一个未记录的功能(有时候会很慢) .
谁能告诉我这是否实际上是一种可能留在那里的标准方法?或者是否有其他方式来做我们想做的事情:验证用户的访问令牌是否有效并来自我们的Facebook应用程序 .
你可以打电话给我/权限和我吗?fields =安装,但这些似乎都告诉我我们正在检查的WHICH facebook应用程序 .
3 回答
您可以向每个请求传递access_token的signed_request insted . 参数signed_request基于应用程序的密钥,您可以简单地验证它 . 阅读documentation关于已签名的请求 .
您应该按照docs(客户端或服务器端)中的描述实现身份验证流程 . 基本上,您可以通过使用您的应用程序对用户进行身份验证来获取新的访问令牌,并将该令牌用于对服务器的请求 . 这样您就可以确保将令牌"belongs"添加到您的应用中 . 要做的步骤:
使用您的应用ID初始化您选择的Facebook SDK .
检查用户是否已经授权您的应用 .
如果用户已经授权您的应用程序,您将获得他或她的Facebook用户ID以及令牌("belongs"到您的应用程序),如果没有:验证用户并获取令牌 .
docs为您提供示例代码和许多详细信息:
对于客户端身份验证,请特别注意Status & Sessions
对于服务器端身份验证,请查看4. Exchange the code for a User Access Token
UPDATE:
您提到的功能记录在here(向下滚动到2.向API发出请求):
因此该功能可能会保留 .
这是旧的,但我最近也有同样的担忧 . 我认为最直接的方法是使用
debug_token
检查访问令牌 .参考:https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow#checktoken