在Android上使用facebook sdk获取代理电子邮件地址而不是真实的电子邮件地址

时间:2011-10-12 13:25:59

标签: android facebook

我正在开发一个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示例。 它没有添加“电子邮件”权限,所以我只是在示例中对其进行了修改,即使该示例现在也获得了代理电子邮件地址! :( 所以这肯定不是我代码的问题。

2 个答案:

答案 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 
     }); 
   }   
);

我知道这并不能完全解决您的问题,但希望它会指出您正在使用的语言的正确方向。