我正在开发一个Android应用程序,其中包含Facebook集成。 我已正确创建了一个Facebook App&在App设置中添加了我的调试密钥库的哈希码。
我可以成功登录Facebook并正确获取有关登录用户的基本信息。我正在使用官方Facebook SDK for android。
我只是要求用户获得电子邮件地址的许可。这是昨天的工作。我正确地收到了电子邮件地址。但从今天起,它给了我代理的电子邮件地址,而不是真正的电子邮件地址。
在它要求允许的权限对话框中,它向我显示正确(真实)的电子邮件地址,但是当我查询图形API调用('我')时,它会给我代理的电子邮件地址。
有人遇到过这个问题吗?
Here is a screenshot of the permission dialog.
我尝试过不同的关键哈希,创建一个新的Facebook应用程序,创建一个新的Facebook帐户。我们的应用程序的iPhone版本也发生了同样的行为。
编辑 - >查看帐户设置页面> Facebook上的应用程序,我请求的权限是“电子邮件”,但在应用程序设置上,它只显示代理电子邮件地址的权限。如何申请真实电子邮件地址的许可? Facebook最近是否更改了他们的Permission模型?
编辑2 - >我尝试了Android Android SDK中包含的新的Hackbook for Android示例。 它没有添加“电子邮件”权限,所以我只是在示例中对其进行了修改,即使该示例现在也获得了代理电子邮件地址! :( 所以这肯定不是我代码的问题。
答案 0 :(得分:0)
我有同样的问题。经过大量调试后,我发现在Facebook应用程序设置中,禁用“增强的Auth Dialog”就可以了。这可以在高级版下的应用程序设置中找到。
你的milage可能会有所不同。
答案 1 :(得分:0)
我遇到了类似的问题(代理电子邮件通过网络应用程序曝光,而非Android应用程序)但在文档方面找不到多少。我能说的最好,它必须与用户的遗留权限有关。
This post (from January 2010) 描述了从代理到真实电子邮件句柄的转变。我的想法是“如果用户在轮班之前给你的应用程序权限,FB必须在某处设置一点,以便你的应用程序只能获得代理句柄。”
我发现a recent FB blogpost有关撤销旧权限的问题。
这是我的JS代码(包含在FB.init之后)的摘要,用于在提示用户登录时撤消“电子邮件”权限(此时将再次提示他们“电子邮件”权限):
FB.Event.subscribe('auth.prompt',
function(response) {
FB.api('/me/permissions', 'delete', { permission : 'email' }, function(response) {
// do something here if you like
});
}
);
我知道这并不能完全解决您的问题,但希望它会指出您正在使用的语言的正确方向。