通过PHP SDK验证Facebook API访问令牌和用户ID?
我在我的服务器上使用Facebook
PHP SDK(v3.2.3,而不是v4.0)(
https://developers.facebook.com/docs/reference/php/3.2.3),在我的Phonegap v3.3.0 iOS应用程序中手动安装了Phonegap Facebook插件(Master)(
https://github.com/phonegap/phonegap-facebook-plugin).
我已经很好地设置了所有内容,应用程序显示了Facebook访问令牌和身份验证用户的“userID”.问题是,Facebook令牌只持续约2个月.为了解决这个问题,我创建了一个表,其中包含了Facebook为所有基于FB的用户提供的每个FB访问令牌.这适用于我的网站“使用Facebook登录”按钮! …但是因为这个Phonegap插件让设备成为Facebook和我的数据库之间的中间人,我需要我的服务器直接用Facebook仔细检查以验证用户提供的用户ID和访问令牌是真的.我已经看到我可以查询https://graph.facebook.com/app?access_token=TOKEN或执行以下操作: GET /debug_token? input_token={input-token}& access_token={access-token} …并且显然得到了我需要的一切,但我感觉攻击者可以继续点击我的PHP脚本,一遍又一遍地检查Facebook,直到他们找到成功 – 然后他们将拥有访问我的应用程序所需的凭据代表他们猜对象的那个用户. 如果攻击者在几周内猜测任何Facebook访问令牌的想法是荒谬的,请告诉我.但我希望将其缩小范围并迫使攻击者也知道他们猜测哪个用户访问令牌 – 这几乎不可能破解.那么如何验证用户使用用户访问令牌&用户的数字ID? 解决方法
每当您获得令牌并从Facebook使用用户ID查找您的用户时,从Facebook获取用户的Facebook ID.
即使您的应用需要离线访问并且您使用已保存的令牌,也请在使用之前验证令牌. 如果您未验证令牌,则如果用户退出Facebook或未经授权您的应用,您的应用仍可能正常运行. $facebook = new Facebook(array( 'appId' => <FACEBOOK_ID>,'secret' => <FACEBOOK_SECRET>,)); $facebook->setAccessToken($_REQUEST['access_token']); if (($userId = $facebook->getUser())) { // $_REQUEST['access_token'] is valid token for user with id $userId } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |