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

How to get a Facebook access token for a page with no app or app secret

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

https://developers.facebook.com/apps/ / settings / advanced /

随着:

[FBAccessTokenData createTokenFromString:]
[FBSession openFromAccessTokenData:]

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

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

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

[FBSettings setClientToken:]

来自文档:"Sets the Client Token for the Facebook App. This is needed for certain API calls when made anonymously, without a user-based Session."


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

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: permanent Page Access Token?

Obtain new Access Token without Facebook Login

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

trying to get app access token

但尚不清楚如何将它从node.js传递回客户端 . 我对所有这些感到非常困惑,并且不明白为什么使用图形API访问公共数据没有更好的记录 . 我有正常的用户登录在iOS工作,如果我找到一个可以从网上调整匿名登录示例 . 任何例子都将非常感谢 .

UPDATE:

These instructionsthese docs帮助我从应用程序ID创建了一个可以用于Facebook API访问的长期令牌 . 这是通过像php这样的后端服务器来完成的,但是有可能通过URL请求将它调整到iOS(显然,你只能与客户共享令牌,而不是MY_CLIENT_SECRET) . 我还没有调查当许多客户通过应用程序令牌向Facebook API发出请求时会发生什么 .