Facebook v2.0 API-强制初始画布登录使用2.0 API

Facebook v2.0 API-强制初始画布登录使用2.0 API,facebook,facebook-graph-api,Facebook,Facebook Graph Api,背景信息: 我正在开发一款facebook游戏,需要在未来几个月内转换为facebook v2.0 API。它是在2.0API转换之前制作的,因此目前用户是通过Facebook 1.0API登录的 除了向非用户发送邀请消息外,我已经成功地将其转换为在几乎所有情况下使用2.0API。在2.0 API下发送邀请将返回受邀请人的应用程序范围的用户ID,而不是该用户的规范Facebook ID 问题: 当用户第一次登录游戏时,他们是以规范的Facebook ID登录的,而不是我之前给出的应用范围ID。这

背景信息:

我正在开发一款facebook游戏,需要在未来几个月内转换为facebook v2.0 API。它是在2.0API转换之前制作的,因此目前用户是通过Facebook 1.0API登录的

除了向非用户发送邀请消息外,我已经成功地将其转换为在几乎所有情况下使用2.0API。在2.0 API下发送邀请将返回受邀请人的应用程序范围的用户ID,而不是该用户的规范Facebook ID

问题:

当用户第一次登录游戏时,他们是以规范的Facebook ID登录的,而不是我之前给出的应用范围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上的应用程序控制面板上有一个滑块,可以让您选择要用于应用程序的API版本,但我再也找不到任何允许我更改此设置的设置。任何关于如何处理此问题的建议都将不胜感激。

问题似乎出在base_facebook.php的getLoginURL函数中,以获取正确的重定向url。将“dialog/oauth”更改为“v2.1/dialog/oauth”会导致初始授权的url如下所示:


这会强制用户在首次登录应用程序时获取应用程序范围内的用户ID。

要解决您的邀请问题,只需在facebook图表中查询您从请求邀请中获得的范围内的用户ID: Get(“[scoped_id]?fields=id”)


您将获得应用程序中使用的id,无论它是规范的还是范围的。

只需在调用中添加v2.0即可使用v2.0登录