背景信息:
我正在制作一款Facebook游戏,需要在未来几个月内转换为Facebook v2.0 API。它是在2.0 API转换之前制作的,因此目前用户都是在Facebook 1.0 API下登录的。
我已成功转换为使用2.0 API几乎所有情况,但向非用户发送邀请消息除外。在2.0 API下发送邀请会返回受邀人员的应用范围用户ID,而不是该用户的规范Facebook ID。
问题:
当用户第一次登录游戏时,他们会在规范的Facebook ID下登录 - 而不是之前给出的app范围ID。这使得将在我们的数据库中发送的原始消息(在应用程序范围的用户ID下)绑定到无法登录的用户。我控制的所有API调用都是在Facebook 2.0 API下完成的,但是当你第一次点击应用程序时出现的初始权限对话框(询问你是否要授予这个应用程序的权限)似乎是由Facebook管理的。 ,并使用1.0 API进行初始登录,因为它认为我的应用程序仍在使用1.0 API。正如您在下图中看到的那样,它要求在2.0 API中删除基本信息权限。
问题
有什么办法可以强迫这个初始对话框使用Facebook API 2.0吗?这应该强制新用户使用应用范围的用户ID,并在尝试匹配两个不同的ID时绕过问题。
有一段时间,我相信developers.facebook.com上的app控制面板有一个滑块,可让您选择要用于应用的API的哪个版本,但我无法再找到任何设置让我改变这个。任何关于如何处理这个问题的建议都将不胜感激。
答案 0 :(得分:1)
似乎问题出在base_facebook.php的getLoginURL函数中,以获取正确的重定向url。将'dialog / oauth'更改为'v2.1 / dialog / oauth'会产生一个类似于初始授权的URL:
https://www.facebook.com/v2.1/dialog/oauth?client_id= ...
这会强制用户在初次登录应用时获取应用范围的用户ID。
答案 1 :(得分:0)
要解决您的邀请问题,只需向facebook图表询问您从请求邀请中获得的scoped_id: facebook.Get( “[scoped_id]字段= ID”)
并且您将获得在您的应用中使用的ID,无论这是规范还是范围。