使用客户端令牌/匿名访问 Facebook Graph API?

Zac*_*ris 5 facebook anonymous token facebook-graph-api ios

我正在开发一个 iOS 应用程序,其中用户需要能够在没有 Facebook 登录的情况下访问 Facebook Graph API(因为他们以仅限电子邮件的方式注册了我的应用程序)。他们主要需要检索其他 Facebook 用户的公共提要(名人等),以便我可以在关于框中显示该信息。在旧的 API 中,我相信这被称为公共帖子搜索或离线访问,但这些似乎已被 Facebook 弃用。我想知道直接使用 app-id 作为令牌是否可行:

如何为没有应用程序或应用程序机密的页面获取 Facebook 访问令牌

取而代之的是,我可以在以下位置使用“客户端令牌”:

https://developers.facebook.com/apps/ {your-app-id}/settings/advanced/

随着:

[FBAccessTokenData createTokenFromString:]
[FBSession openFromAccessTokenData:]
Run Code Online (Sandbox Code Playgroud)

使用我的应用程序凭据将用户登录到 Facebook?另一种选择可能是以编程方式匿名登录用户:

https://developers.facebook.com/products/anonymous-login/

我很难在 FacebookSDK.framework 中找到相应的调用。我能找到的唯一提到的“匿名”是:

[FBSettings setClientToken:]
Run Code Online (Sandbox Code Playgroud)

来自文档:“为 Facebook 应用程序设置客户端令牌。匿名进行某些 API 调用时需要这样做,没有基于用户的会话。”


如果这一切都不可能,那么我可能需要回退到使用 node.js 服务器从应用程序令牌为用户生成长期存在的令牌。这在“从服务器端长寿命令牌生成长寿命用户令牌”部分中讨论:

https://developers.facebook.com/docs/facebook-login/access-tokens

我看到如何在这里获得令牌:

https://developers.facebook.com/tools/access_token/

https://developers.facebook.com/tools/explorer/?method=GET&path=me%3Ffields%3Did%2Cname&version=v2.2

然后使用 node.js 以某种方式扩展它并将其传递给客户端:

facebook:永久页面访问令牌?

无需 Facebook 登录即可获取新的访问令牌

或者通过使用 app_id|app_secret 代替令牌来完全跳过获取令牌:

尝试获取应用访问令牌

但尚不清楚如何将其从 node.js 传递回客户端。我对所有这些感到非常困惑,不明白为什么没有更好地记录使用图形 API 访问公共数据。我有在 iOS 中工作的普通用户登录,如果我能找到一个匿名登录示例,我可以改编一个来自网络的匿名登录示例。任何例子将不胜感激。

更新:

这些说明这些文档帮助我从可用于 Facebook API 访问的应用程序 ID 创建了一个长期存在的令牌。目前这是通过像 php 这样的后端服务器完成的,但可能可以通过 URL 请求使其适应 iOS(显然,您只会与客户端共享令牌,而不是 MY_CLIENT_SECRET)。我还没有研究当许多客户通过应用程序的令牌向 Facebook API 发出请求时会发生什么。