为通过 Facebook 登录授权的用户呈现 Facebook 关注按钮?

Render a Facebook follow button for users who've authed via Facebook Login?

我有一个使用 Facebook 登录的网络应用程序。我们想在我们产品的个人资料页面上为这些用户呈现 Facebook "Follow" 按钮。

但是,"Follow" 按钮在使用配置文件 URL 初始化时不会呈现,我们在用户对我们的应用程序进行授权时从图表 API 中获得该配置文件。

只有当按钮中使用的 URL 是他们的主要 Facebook 帐户 URL 时,我才能让它工作,我可以手动找到它,但不能以编程方式找到。我们似乎无法通过图表 API 或 Javascript SDK 访问此 URL。

我希望使用用户图节点 "link" 边中给出的配置文件 URL 的示例标记(请注意,这使用了应用范围内的用户 ID):

<div class="fb-follow" data-href="https://www.facebook.com/app_scoped_user_id/812839870448/" data-layout="button" data-show-faces="false"></div>

实际使用非应用范围用户名的示例标记:

<div class="fb-follow" data-href="https://www.facebook.com/yetanotherjosh" data-layout="button" data-show-faces="false"></div>

为已通过您的应用程序验证的用户呈现关注按钮似乎是一项非常简单的任务,我错过了什么?谢谢!

p.s。 - 如果您想知道 JS SDK 是否未正确加载,我们将通过此代码加载它,as suggested by the Facebook developer site,在 body 标签内(并且该按钮确实适用于某些 URLs,所以我认为 SDK 设置不是问题):

<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.5&appId=REDACTED";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

我想做同样的事情,但我对 php api.

有同样的问题

理论上你可以做以下事情:

  1. https://www.facebook.com/1234 url to it's end point: https://www.facebook.com/username
  2. 之后有一个 php 脚本
  3. 第 1 步非常慢,因此您应该只执行一次,也许使用 cron 作业,而不是在用户登录时即时执行。然后将 url 存储在您的数据库中。
  4. 使用存储的 url 生成关注按钮。

对于第 1 步,您可以使用

但请确保添加用户代理:

 $request .= 'User-Agent: Safari/537.16\r\n'; 

否则您将被重定向到 /unknownbrowser

我会自己尝试,post如果有结果的话。

稍后编辑:我试过了,facebook 需要你登录才能获得最终的 url,这样你就可以再次从理论上开始登录流程以进入 url,但这可能有点矫枉过正。