如果我的应用程序在 Facebook 上默认授予 user_friends 权限,为什么我无法检索到多个好友?

Why can't I retrieve a number of friends if my app has been granted a user_friends permission by default on Facebook?

我很困惑为什么 Graph API returns 只有 id 值,当我调用这个时:

$response->get('/10207252567926988?fields=id,friends&access_token='.$accessToken);

注意:这个ID是app-scoped user ID,用户已经授权了我的app。这是应用程序访问令牌,而不是用户访问令牌(但当我用用户访问令牌替换它时也会发生同样的情况)。这是 developers.facebook.com 中的内容

所以 user_friends 权限默认获得批准,但我仍然从 Graph 得到空响应。可能是因为上图中的这几个权限是登录权限,所以只有在登录我的应用程序的过程中,用户才能给我他的朋友数量数据,而不是之后?是否可以在没有用户 accessToken 但使用应用程序 accessToken 的情况下获得 total_count 个朋友?

  1. 您的应用只能访问 to/return 当前用户的好友,这些好友也是您的应用的用户,并且也已向您的应用授予 user_friends 权限。

  2. 是的,通过在 Fb.login() 调用范围内指定 user_friends 权限,您的应用程序将提示用户获得该权限。例如:

    FB.login(
      callbackFunction,
      { scope: "public_profile,email,user_friends" }
    );
    
  3. 但是,用户始终可以在出现提示时通过单击 "No" 来拒绝授予 "user_friends" 职位。

    • 为了强制执行它,您必须立即检查用户是否确实授予了该权限,并且....
    • 如果没有,请重新请求使用该范围登录并阻止进一步的应用功能,除非您收到它。
  4. 但是... 即使用户确实授予您的应用程序权限,如果他们没有任何使用该应用程序的朋友,或者那些好友未授予您的应用 user_friends 权限,那么您将只能看到好友总数。