有没有办法通过 facebook php sdk 确定 facebook url 是否指向个人资料或页面?
Is there a way to determine whether a facebook url leads to a profile or a page through facebook php sdk?
我网站的用户可以将 facebook 粉丝页面和个人资料添加到网站。我正在尝试找出一种方法来确定添加的 url 是否指向 facebook 个人资料或 facebook 粉丝专页。
我在网站上安装了 facebook php-sdk 版本 5,我也有我自己的个人资料的有效访问令牌。
有没有办法查明任何给定的 facebook url 是否会在没有访问令牌的情况下指向个人资料或粉丝专页?
Is there a way to find out whether any given facebook url leads to a profile or a fanpage without having and access token to either of them?
没有正式的。
如果您的个人资料 URL 包含用户名(用户或页面),您仍然可以尝试做出有根据的猜测。
尝试访问您无法通过这种方式访问的用户配置文件,目前仍然会导致错误消息,“(#803) 无法通过用户名 (xyz) 查询用户。” Facebook 在从用户对象中删除 username
字段后引入了此错误消息。
如果它是一个页面,而你又没有专门授予访问权限的令牌,那么你应该得到错误 “(#10) To use 'Page Public Content Access', your use of此端点必须由 Facebook 审查和批准。 […]”(假设您的应用没有审查和批准此功能;如果有,您应该能够使用此请求读取基本的 public 页面数据,因此您可以绘制你的结论。)
这适用于当前 public 且没有访问限制的页面;如果不是这种情况,您应该收到消息,“(#10) 对象不存在,由于缺少可审核的功能 'Page Public Content Access' 而无法加载,或者不支持此操作。 […]”
但也可能有其他情况。并非每个用户都为他们的个人资料设置了用户名 - 如果您只有数字用户 ID,您会收到 “不支持的获取请求。 ID 为 'xyz' 的对象不存在,由于缺少权限而无法加载,或者不支持此操作。” 但该消息并非特定于用户配置文件,您可能会在其他对象时收到它您根本无权访问。
除此之外,Facebook 可能会改变这一点,如果他们觉得这会暴露比他们感到舒服的更多信息。他们可能会在某个时候切换到涵盖所有这些情况的更通用的错误消息,或者类似的东西。
除非你绝对必须确保你的应用程序知道什么是用户个人资料和什么是页面,否则我建议不要尝试这个 - 而是相信你的用户他们会如果结果对他们很重要,请付出一点努力。
编辑:可以(部分)使用的另一件事是通过使用 ?ids=…
语法指定 URLs 来获取有关“外部”Open Graph 对象的信息的语法。 ?ids=https://www.facebook.com/zuck,https://www.facebook.com/facebook
的请求当前产生以下结果,
{
"https://www.facebook.com/facebook": {
"name": "Facebook",
"id": "20531316728"
},
"https://www.facebook.com/zuck": {
"id": "https://www.facebook.com/zuck"
}
}
如您所见,第一个是 Facebook 的官方页面,它 returns 页面 ID,而第二个是 Mark 的个人资料,它不是。但是,请注意 - 对于非 public 页面,您也不会在此处获得任何 ID。但也许结合上述请求,这将根据对象的类型产生不同的错误消息,这可能会提高此处“有根据的猜测”的质量。
我网站的用户可以将 facebook 粉丝页面和个人资料添加到网站。我正在尝试找出一种方法来确定添加的 url 是否指向 facebook 个人资料或 facebook 粉丝专页。 我在网站上安装了 facebook php-sdk 版本 5,我也有我自己的个人资料的有效访问令牌。
有没有办法查明任何给定的 facebook url 是否会在没有访问令牌的情况下指向个人资料或粉丝专页?
Is there a way to find out whether any given facebook url leads to a profile or a fanpage without having and access token to either of them?
没有正式的。
如果您的个人资料 URL 包含用户名(用户或页面),您仍然可以尝试做出有根据的猜测。
尝试访问您无法通过这种方式访问的用户配置文件,目前仍然会导致错误消息,“(#803) 无法通过用户名 (xyz) 查询用户。” Facebook 在从用户对象中删除 username
字段后引入了此错误消息。
如果它是一个页面,而你又没有专门授予访问权限的令牌,那么你应该得到错误 “(#10) To use 'Page Public Content Access', your use of此端点必须由 Facebook 审查和批准。 […]”(假设您的应用没有审查和批准此功能;如果有,您应该能够使用此请求读取基本的 public 页面数据,因此您可以绘制你的结论。)
这适用于当前 public 且没有访问限制的页面;如果不是这种情况,您应该收到消息,“(#10) 对象不存在,由于缺少可审核的功能 'Page Public Content Access' 而无法加载,或者不支持此操作。 […]”
但也可能有其他情况。并非每个用户都为他们的个人资料设置了用户名 - 如果您只有数字用户 ID,您会收到 “不支持的获取请求。 ID 为 'xyz' 的对象不存在,由于缺少权限而无法加载,或者不支持此操作。” 但该消息并非特定于用户配置文件,您可能会在其他对象时收到它您根本无权访问。
除此之外,Facebook 可能会改变这一点,如果他们觉得这会暴露比他们感到舒服的更多信息。他们可能会在某个时候切换到涵盖所有这些情况的更通用的错误消息,或者类似的东西。
除非你绝对必须确保你的应用程序知道什么是用户个人资料和什么是页面,否则我建议不要尝试这个 - 而是相信你的用户他们会如果结果对他们很重要,请付出一点努力。
编辑:可以(部分)使用的另一件事是通过使用 ?ids=…
语法指定 URLs 来获取有关“外部”Open Graph 对象的信息的语法。 ?ids=https://www.facebook.com/zuck,https://www.facebook.com/facebook
的请求当前产生以下结果,
{
"https://www.facebook.com/facebook": {
"name": "Facebook",
"id": "20531316728"
},
"https://www.facebook.com/zuck": {
"id": "https://www.facebook.com/zuck"
}
}
如您所见,第一个是 Facebook 的官方页面,它 returns 页面 ID,而第二个是 Mark 的个人资料,它不是。但是,请注意 - 对于非 public 页面,您也不会在此处获得任何 ID。但也许结合上述请求,这将根据对象的类型产生不同的错误消息,这可能会提高此处“有根据的猜测”的质量。