Android Facebook 登录和网络服务器

标签 android web-services facebook authentication

我正在开发一个 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/

相关文章:

android - 在过去几分钟内从 Android 浏览器捕获浏览历史记录

android - Listener 和 Receiver (Android) 有什么区别?

web-services - 如何使用 WCF 连接 Apple 的 GSX NewGeneration Web 服务?

android - 恢复 fragment 的正确方法是什么?

java - 为了验证一个对象,我可以将不同的对象传递给同一个方法吗?

web-services - 在结合 2waySSL 和代理的 Weblogic 10.3.6 中使用 JAX-WS

ios - 使用 iOS FBSDK v4 (multipart/form-data) 上传到 facebook 时编码视频的正确方法

android - 如何使用相机作为 Facebook Android Webview 中文件输入的来源

android - IE、Chrome、Firefox 和 Android 浏览器上的 Facebook oauth、FB.getLoginStatus 和 FB.logout

android - 打开 ActivityGroup 的子 Activity 时出现问题