在通过图形API为某些用户提取某些数据时,我遇到了一些异常错误。
例如,我们都知道我们可以通过graph.facebook.com/username
获取基本的用户信息
它有效。但它不适用于某些用户。就像用户www.facebook.com/sanzida.tanzum
是有效的Facebook用户一样。所以,我们应该通过graph.facebook.com/sanzida.tanzum
获取她的基本信息。但是当你尝试这样做时,你会得到错误
{
"error": {
"message": "Unsupported get request.",
"type": "GraphMethodException",
"code": 100
}
}
并且这不是权限问题,因为当她尝试通过图形API检索自己的数据时,使用用户自己会收到相同的错误。实际上用户sanzida.tanzum对图API是不可见的。例如,用户sanzida.tanzum在我的好友列表中。你可以在这里查看。 my friendlist。(这是公开的)。但是当我通过图形API检索我的好友列表时,我的好友列表显示为不包括用户sanzida.tanzum!但她在我的朋友名单中! 我曾尝试联系facebook以解决此事,因为我没有找到与此事有关的任何文件。他们回答说这很平常。 (可能他们根本没有读过我的邮件。我正在和facebook讨论电子邮件对话)
嗨তৌফিক,
他们正在犯错,因为他们不是你......他们没有 权限看你做的事情。他们可能也会失踪 访问令牌。无论哪种方式:这里没有错误。
谢谢,
Emrakul Security Facebook
-----原始消息-----来自:*****@ovi.com收件人:主题:报告安全漏洞 - Facebook图形API中的异常错误
您的电子邮件地址:*****@ovi.com您是否有技术细节? 安全漏洞?:是漏洞类型:隐私/ 身份验证漏洞范围:Platform Developer API标题: Facebook图形API产品/网址中的不寻常错误: https://graph.facebook.com/sanzida.tanzum描述和影响:我 正在做一些图形API调用以进行测试。我大部分时间都在做 主要是用户个人资料。 (https://graph.facebook.com/exampleuser)
不知怎的,我意识到facebook正在为某些用户提供以下错误 即使他们在我的朋友名单上。当他们尝试时会发生同样的事情 自己。
例如,用户“https://www.facebook.com/sanzida.tanzum”已启用 我的朋友列表。 (我的朋友名单是公开的。您可以查看是否需要。) 所以,根据facebook图形API,我可以请求用户的基本 info using(https://graph.facebook.com/sanzida.tanzum)但它返回 这个错误:
“{”error“:{ “message”:“不支持的获取请求。”, “type”:“GraphMethodException”, “code”:100}}“
实际上,图形API无法访问此用户。另一个 例子..当我通过图形API请求我的朋友列表时,所有的朋友 除了用户(sanzida.tanzum)之外,我的朋友列表会被显示。但她在 我的朋友名单!点击这里(我的朋友名单是公开的) “https://www.facebook.com/toufiqueimam/friends”。那么为什么呢 只发生在少数用户身上?
刚才我确认用户自己也得到了同样的错误 如果她试图访问(https://graph.facebook.com/sanzida.tanzum)
{“error”:{ “message”:“不支持的获取请求。”, “type”:“GraphMethodException”, “code”:100}}
复制说明/概念证明:复制:首先去 到https://www.facebook.com/sanzida.tanzum你会发现它是有效的 轮廓。现在试试https://graph.facebook.com/sanzida.tanzum你会的 得到以下错误
{“error”:{ “message”:“不支持的获取请求。”, “type”:“GraphMethodException”, “code”:100}}
答案 0 :(得分:4)
这不是错误,错误意味着您尝试访问的数据无法访问,不存在,已被删除,因为您未提供访问令牌而无法访问可以看到它的用户等。
有关与Facebook页面相关的此错误消息的示例,请参阅此答案:https://stackoverflow.com/a/6847088/21062 - 尝试访问用户配置文件时,如果该用户已阻止您,阻止您的应用,停用其帐户或禁止所有应用访问其信息。
答案 1 :(得分:2)
仅仅是一个FYI,我遇到了这个问题,并不是因为用户阻止了所有应用程序。在我的场景中,我的应用程序试图将Facebook的64位整数强制转换为53位JavaScript整数(节点应用程序)。它正在破坏这个价值,所以当我在我的应用程序生命周期中稍后制作Facebook GET请求时,我正在使用损坏的价值这样做,并且Facebook试图告诉我“嗯,这个UserId不存在”。
所以在我的应用程序中,我不得不使用Node Big-integer插件,以及Mongodb的Mongoose mongoose-long插件。
长话短说,如果要将UserId转换为原生的64位整数,除非应用程序中的intger类型至少为64位,否则不要这样做。