防止使用Facebook代理电子邮件注册

防止使用Facebook代理电子邮件注册,facebook,Facebook,问题是,当用户单击我网站上的FB登录按钮时,Facebook API会向他抛出一个窗口,请求访问权限(这是通常的流程)。但是当用户选择代理邮件地址(匿名)时,我想强制用户只使用真实的电子邮件id登录 我该怎么处理这件事 我可以检测到用户使用了代理电子邮件并阻止他注册,但我不能从他的授权应用列表中删除我的应用-这意味着我不能让他进入初始对话框来选择他将提供的电子邮件。你不能强迫用户再次通过授权对话框,因为就Facebook而言,用户已安装您的应用程序,无需执行其他操作。在这里,您可以做的最好的事情

问题是,当用户单击我网站上的FB登录按钮时,Facebook API会向他抛出一个窗口,请求访问权限(这是通常的流程)。但是当用户选择代理邮件地址(匿名)时,我想强制用户只使用真实的电子邮件id登录

我该怎么处理这件事


我可以检测到用户使用了代理电子邮件并阻止他注册,但我不能从他的授权应用列表中删除我的应用-这意味着我不能让他进入初始对话框来选择他将提供的电子邮件。

你不能强迫用户再次通过授权对话框,因为就Facebook而言,用户已安装您的应用程序,无需执行其他操作。在这里,您可以做的最好的事情是编写您自己的表单,通知用户Facebook代理电子邮件地址是不可接受的,您需要一个真实的电子邮件地址。不幸的是,这并不强迫用户向您提供他们的Facebook帐户电子邮件地址,甚至是真实的电子邮件地址。这是我们通过Facebook所能做到的最好的,这是我们必须要处理的事情

2011年10月5日更新

我浏览了Facebook文档,发现了旧的遗留RESTAPI中存在的一种方法,它实际上允许您从用户处删除应用程序的扩展权限。我认为您可以使用这个API调用来管理从Facebook用户获取非代理地址,同时仍然使用本机安装对话框

我用FB JS SDK测试了它,它成功了!您需要使用的方法是方法。下面是通过JSSDK和PHPSDK调用该方法的两个示例

Javascript:

<script>
FB.api({
    method: 'auth.revokeExtendedPermission',
    perm:   'read_stream'
}, function(response)
{ 
    console.log(response) 
});
</script>
<?php

$facebook->api(array(
'method' => 'auth.revokeExtendedPermission',
'perm'   => 'email',
'uid'    => $uid
));

FB.api({
方法:“auth.revokeExtendedPermission”,
perm:“读取流”
},功能(回应)
{ 
console.log(响应)
});
PHP:

<script>
FB.api({
    method: 'auth.revokeExtendedPermission',
    perm:   'read_stream'
}, function(response)
{ 
    console.log(response) 
});
</script>
<?php

$facebook->api(array(
'method' => 'auth.revokeExtendedPermission',
'perm'   => 'email',
'uid'    => $uid
));

使用php sdk通过图形api(如下所示)调用应用程序撤销,然后通过对话框重定向用户,并解释此非代理要求

private function revokeAccess() {
    $access_token = $this->facebook->getAccessToken();
    $result = $this->facebook->api(array(
        'method' => 'auth.revokeAuthorization',
        'uid' => $this->{facebook id here},
        'access_token' => $access_token
            ));
    return $result;
}
这段代码是php。
这将完全删除应用程序。
成功返回1;失败时为0。

$this->facebook==来自facebook php sdk的facebook对象。

请使用相关编程语言的标记更新您的问题。以前,这个问题是用asp.net、php和ruby on rails标记的。我用一些新发现的信息更新了我的原始答案,我认为您可能能够利用这些信息,并将帮助您完成您想要做的事情。代理邮件系统的存在有一个很好的理由——防止垃圾邮件。除了能够垃圾邮件/出售用户的真实电子邮件地址外,您还有什么理由强迫用户提供另一个电子邮件地址?