【问题标题】:facebook get short lived access token android app and pass to serverfacebook获取短期访问令牌android应用程序并传递给服务器
【发布时间】:2014-10-20 05:57:50
【问题描述】:

对于从我们的 android 应用和 iOS 应用注册的用户,我们需要从应用生成短期访问令牌,并且需要让服务器生成长期令牌。 参考https://developers.facebook.com/docs/facebook-login/access-tokens#extending,我们看到如下-

从您的服务器而不是客户端进行此调用。应用程序密钥包含在此 API 调用中,因此您永远不应该真正在客户端发出请求。而是实现发出请求的服务器端代码,然后将包含长期令牌的响应传递回您的客户端代码。这将是与原始令牌不同的字符串,因此如果您要存储这些令牌,请替换旧的。

一旦您检索到长期存在的令牌,您就可以从您的服务器使用它或将其发送回客户端以便在那里使用。

当我们有一个安卓应用和服务器而不是一个网页作为客户端时,我们如何实现这一点?

facebook 文档提到使用 Facebook 移动 SDK 的移动应用程序会获得长期令牌。如何从 android 应用程序获取短期访问令牌?我们如何在 facebook 文档中提到的移动应用程序中实现此实现 - Web 客户端进行身份验证,通过服务器将短期令牌交换为长期令牌,令牌被发送回 Web 客户端,然后是 Web 客户端和使用长期令牌进行调用。他们还在文档中提到从您的服务器而不是客户端进行此调用 - GET /oauth/access_token?
grant_type=fb_exchange_token&
client_id={app-id}& client_secret={app-secret}& fb_exchange_token={短期令牌}

【问题讨论】:

    标签: android ios facebook spring-security


    【解决方案1】:

    看看Design for Facebook authentication in an iOS app that also accesses a secured web service

    你只需要在你的服务器上创建一个 WebService 来接收访问令牌,并采取适当的行动。

    【讨论】:

    • 在您共享的链接中,给出的解决方案是单独登录 Facebook 并单独登录到 Web 应用程序。对于正常登录,我们捕获用户名和密码。如果有人使用 facbook 登录我们的应用程序,我应该将什么视为密码?
    • 只有步骤 3 和 4 对您的用例很重要。我猜你不想让事情复杂化。只需在您的服务器上设置一个与 HTTPS 通信的服务,接收短期令牌,交换它并将其保存到某个数据库。
    • 我已经编辑了我的问题并添加了更多详细信息。服务器应该如何验证令牌并验证用户以进行 api 调用?我们正在使用 Spring Security 对用户进行普通用户名和密码的身份验证。
    猜你喜欢
    • 1970-01-01
    • 2013-05-07
    • 2017-03-16
    • 2016-01-18
    • 1970-01-01
    • 2013-08-05
    • 2012-09-20
    • 1970-01-01
    • 2011-07-21
    相关资源
    最近更新 更多