【问题标题】:Facebook AccountKit requestAccount security error in iOSiOS 中的 Facebook AccountKit requestAccount 安全错误
【发布时间】:2017-10-03 21:20:49
【问题描述】:

使用 Facebook AccountKit 完成登录后,我想检索用于身份验证的电话号码或电子邮件。根据文档,这是 SDK 中的一个简单方法调用:

[accountKit requestAccount:^(id<AKFAccount> account, NSError *error) {...}];

但是,我不断收到此错误:

[AccountKit][错误]:来自服务器的 API 调用需要 appsecret_proof 参数

好的,首先我使用他们的 Client SDK 进行调用,而不是来自服务器,因此错误文本没有任何意义。用户刚刚登录,所以我有一个有效的访问令牌。

即使假设来自客户端的调用需要appsecret_proof 作为参数,调用requestAccount 时也没有参数字段。

出于安全目的,我希望来自服务器的所有调用都提供 App Secret,因此我不想为我的应用关闭该设置。那么当Require App Secret for server API calls开启时,如何从客户端调用requestAccount呢?

【问题讨论】:

    标签: ios facebook account-kit


    【解决方案1】:

    我认为让您的服务器对 FB 的调用使用机密来保护是没有意义的,但是让您的客户端请求不受保护。请记住,您的客户端比您的服务器更容易受到黑客攻击。

    由于您已经使用密钥对 AK 进行服务器到服务器调用,我建议您只需从服务器端添加一个新调用,该调用获取帐户信息并将其传递回您的客户端。

    为提高安全性,请完全关闭客户端令牌流并仅使用代码流

    【讨论】:

    • 这一切都说得通,除了我的客户只是将电子邮件从客户端传递到 FB 服务器以创建身份验证。很奇怪,我可以传下来,但不能找回它。我认为 AccessKit 可以在本地保存该信息并提供它,而不会对服务器进行不安全的调用。我已经重构了一切以使用代码并现在从服务器获取信息。
    • 当需要 appsecret_proof 时,错误消息还应说明不允许来自客户端 SDK 的 API 调用。由于客户端甚至不支持添加 appsecret_proof 作为参数。
    猜你喜欢
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 2015-10-10
    相关资源
    最近更新 更多