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

时间:2014-10-23 19:16:38

标签: facebook facebook-graph-api

背景信息:

我正在制作一款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中删除基本信息权限。

1.0 Login Dialog

问题

有什么办法可以强迫这个初始对话框使用Facebook API 2.0吗?这应该强制新用户使用应用范围的用户ID,并在尝试匹配两个不同的ID时绕过问题。

有一段时间,我相信developers.facebook.com上的app控制面板有一个滑块,可让您选择要用于应用的API的哪个版本,但我无法再找到任何设置让我改变这个。任何关于如何处理这个问题的建议都将不胜感激。

2 个答案:

答案 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,无论这是规范还是范围。