【问题标题】:OAuth2 Authorization Code with Facebook iOS SDK使用 Facebook iOS SDK 的 OAuth2 授权代码
【发布时间】:2014-03-03 12:23:10
【问题描述】:

我正在开发一个使用 Facebook 登录的 iOS 应用。我已设置并运行 Facebook iOS SDK,但我客户的后端开发人员担心 Facebook 访问令牌的安全性。

使用 Facebook SDK,我们想从 Facebook 获取授权码,而不是访问令牌,并通过 App Key 和 App Secret 在服务器上获取访问令牌。有没有办法做到这一点?

注意:我使用这种方法登录(在 FBSession 上):

openActiveSessionWithReadPermissions:allowLoginUI:completionHandler:

【问题讨论】:

    标签: ios facebook facebook-graph-api facebook-ios-sdk


    【解决方案1】:

    回答我自己的问题:

    目前的 Facebook iOS SDK 无法做到这一点,但您可以调用图形 API

    https://graph.facebook.com/oauth/client_code?access_token=...&client_id=...&client_secret=...&redirect_uri= ...
    

    用代码交换访问令牌。

    但这根本不安全,因为您必须使用 App Secret 发布应用程序。

    【讨论】:

    • 没错,伙计。即使在 Android 上,Facebook 登录 SDK 也不允许您检索身份验证代码,只能检索访问令牌。因此,如果您在应用中禁用 Facebook 登录产品的客户端 oauth 登录,您将无法使用 SDK 从设备登录 Facebook 应用。
    • 但是,facebook 的 Account Kit SDK(使用电子邮件/电话号码登录)不会受此影响。它允许您指定是否要检索令牌或代码,并相应地仅返回。
    • Facebook 强制应用程序将令牌发送到服务器?为什么它不允许为后端获取授权码,以便后端可以自己获取令牌?这是一种更安全的方式。我想知道为什么他们强迫我们将访问令牌发送到后端。
    • 6 年后......我正在做这个 Graph 请求,但在服务器端。这是因为我正在使用 omniauth-facebook gem 与 Ruby 后端交谈,我需要模拟完整的 OAuth 流程,就像它发生在网络上一样:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    相关资源
    最近更新 更多