Ios Facebook图形API-获得共同喜欢

Ios Facebook图形API-获得共同喜欢,ios,swift,facebook,facebook-graph-api,Ios,Swift,Facebook,Facebook Graph Api,我在使用Facebook Graph API获得共同喜欢时遇到了一个问题。背景如下: self.FBLoginButton.readPermissions = ["public_profile", "email", "user_friends", "user_birthday", "user_about_me", "user_likes"] ... ... let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: us

我在使用Facebook Graph API获得共同喜欢时遇到了一个问题。背景如下:

self.FBLoginButton.readPermissions = ["public_profile", "email", "user_friends", "user_birthday", "user_about_me", "user_likes"]
...
...
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: userBFBid, parameters: ["fields": "context.fields(mutual_likes).limit(10)"])
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
        if ((error) != nil) {
            print("Error: \(error)")
        } else {
            print("res: \(result)")
        }
    })
res: {
  context =     {
    id = dXNlcl9jb250ZAXh0OgGQg20zLjrZAswOnuX6*******;
    "mutual_likes" =         {
        data =             (
        );
        summary =             {
            "total_count" = 0;
        };
    };
  };
  id = 101532998**********;
}
  • userA是来自iOS应用程序的请求者
  • userA和userB已从iOS应用程序授予“user_likes”权限
  • userA和userB不是Facebook上的朋友
此部件的我的应用程序Swift代码如下:

self.FBLoginButton.readPermissions = ["public_profile", "email", "user_friends", "user_birthday", "user_about_me", "user_likes"]
...
...
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: userBFBid, parameters: ["fields": "context.fields(mutual_likes).limit(10)"])
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
        if ((error) != nil) {
            print("Error: \(error)")
        } else {
            print("res: \(result)")
        }
    })
res: {
  context =     {
    id = dXNlcl9jb250ZAXh0OgGQg20zLjrZAswOnuX6*******;
    "mutual_likes" =         {
        data =             (
        );
        summary =             {
            "total_count" = 0;
        };
    };
  };
  id = 101532998**********;
}
结果如下:

self.FBLoginButton.readPermissions = ["public_profile", "email", "user_friends", "user_birthday", "user_about_me", "user_likes"]
...
...
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: userBFBid, parameters: ["fields": "context.fields(mutual_likes).limit(10)"])
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
        if ((error) != nil) {
            print("Error: \(error)")
        } else {
            print("res: \(result)")
        }
    })
res: {
  context =     {
    id = dXNlcl9jb250ZAXh0OgGQg20zLjrZAswOnuX6*******;
    "mutual_likes" =         {
        data =             (
        );
        summary =             {
            "total_count" = 0;
        };
    };
  };
  id = 101532998**********;
}
正如你所看到的,双方的喜好不会得到回报

我向userA和userC发出了相同的请求,这两个都是Facebook好友,而且工作正常,所有他们共同喜欢的东西都会被返回

再次说明:userA、userB和userC安装了应用程序,并授予了用户的权限


有没有办法解决这个问题,并与两个不是Facebook好友的用户取得共同的喜好呢?

我终于找到了问题所在

首先:用户喜好必须通过FB用户帐户隐私配置中的public可见,才能通过API访问,即使授予了
user\u likes
权限。 资料来源:

其次,如果用户不是Facebook上的朋友,则请求还必须包含参数
appsecret\u-proof
()。因此,出于安全原因,请求必须从服务器执行,而不是从应用程序执行。资料来源:

希望有一天能帮助别人