我正在开发一个 Android 应用程序和一个网站(它也与 Android 客户端进行通信)。我想使用 FB 登录,但我看到的问题是:
客户端,使用FB登录,然后获取access_token。
客户端和网络服务器如何仅使用此 access_code 进行通信,因为网络服务器需要知道客户端指的是哪个帐户。我也想在网站上实现 FB 登录。
我想到的一种方法是:
客户端登录: 1) 使用 FB 登录并获取 access_token。 2) 使用 access_token 获取一些用户信息。 3) 将access_token 和用户信息提供给网络服务器。 4) Web 服务器也对access_token 执行相同的FB 操作并检索用户信息。 5) 验证用户信息是否匹配,并据此确定用户帐户。 6) 为这个链接在Client和Web Server之间建立另一个access_token。
这是否会使它更有效,或者可能只是进行登录并检索用户电子邮件地址作为实际帐户,并告诉 Web 服务器这是要使用的帐户。
或者有人以其他方式做到了这一点?
最佳答案
对于客户端/服务器之间的通信,您应该使用自己的客户端 ID。
不要依赖 facebook 给你的 access_token,因为它在几个场景中发生了变化。
获取电子邮件也不是一个完整的解决方案,因为用户可以决定不给你他们的邮件。
通常,您需要在双方都实现 Facebook Connect。
1.连接 Facebook
2.从用户那里获得权限(在这里阅读权限:http://developers.facebook.com/docs/reference/api/permissions/)
3.注册为你的用户,并给他一个id(你可以用facebook uid)。
当用户返回您的站点/应用程序时,您需要再次登录他,获取他的 uid 并查询您的服务器以获取用户详细信息。
关于 access_token 的一件事,你需要它来查询 facebook 的 api。每次用户使用 facebook 登录您的网站/手机时,您都可以从 facebook 获取它,或者您可以请求用户获得 offline_access 权限,然后您将拥有相同的 access_token,直到用户在 facebook 上更改密码等。(阅读更多关于它在文档上)。
尽管用户当前未登录到您的站点,但此方法允许您查询 facebook api。
关于Android Facebook 登录和网络服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4663215/