验证 Facebook Connect 会话
我正在编写一个应用程序,它有多个前端客户端,使用 Facebook Connect 作为单点登录解决方案。
例如,其中一个客户端在 iOS 平台上运行,因此所有 Facebook 身份验证都通过 iOS Facebook SDK 在客户端上进行。然而,在用户在客户端上进行身份验证后,由于我使用 Facebook 登录我们的网站,服务器是否可以从客户端获取身份验证数据并进行验证?
I am writing an application which has multiple frontend clients using Facebook Connect as a single signon solution.
One of these clients, for example is running on the iOS platform, so all fb authentication happens on the client via the iOS Facebook SDK. After a user authenticates on the client, however, since I am using Facebook for signing in to our site, is there anyway for the server to take the auth data from the client, and verify it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用 Javascript SDK,调用 FB.getSession() 来获取具有各种与身份验证相关的位的 JS 对象。其中,将“access_token”、“expires”、“secret”、“session_key”、“uid”和“sig”传递到您的服务器。
在服务器端检查调用是否真实,将它们连接到一个字符串中,例如“access_token=1290380d9e&expires=92d903&secret=e9cj9kd&session_key=s49i9i3f&uid=12345”。所以你刚刚通过的一切,除了标志。
在此字符串中,连接您可以从 Facebook 开发者网站 获取的“应用程序密钥”。获取字符串的 MD5 hexdigest(在 Python 中 import md5;md5.new(foobar).hexdigest())并进行比较,看看它是否与您传递的“sig”相同。
Using the Javascript SDK, call FB.getSession() to get a JS object with various auth-related bits. Of these, pass 'access_token', 'expires', 'secret', 'session_key', 'uid' and 'sig' along to your server.
On server-side to check if the call is authentic, concat these into a string such as "access_token=1290380d9e&expires=92d903&secret=e9cj9kd&session_key=s49i9i3f&uid=12345". So everything you just passed, EXCLUDING the sig.
To this string, concat the "app secret" which you can get from Facebook developer site. Take the MD5 hexdigest (in Python import md5;md5.new(foobar).hexdigest()) of the string and compare to see if it is the same as the 'sig' you passed.