这可能是一个基本问题。 我的英语也很差......
我有一个需要Facebook登录的网络服务。 使用JavaScript SDK,我可以获取用户的基本信息,例如用户ID,姓名,性别。 现在大约有10000名用户。
这一次,我需要访问用户的电子邮件地址。 我知道我可以通过添加范围属性来获取新用户的电子邮件地址。 但是,对于现有用户,虽然我可以访问电子邮件地址,但我不知道如何显示授权对话以获取访问电子邮件地址的权限。
有什么想法吗?提前谢谢!
答案 0 :(得分:0)
以下是我使用过的代码段。基本上使用/ me / permissions检查其权限并显示重新验证链接
<script>
var FB_config = {
API_ID: 123123123123,
PERMISSIONS: "publish_stream,email",
};
jQuery(document).ready(function(){
// initialise FB
window.fbAsyncInit = function() {
FB.init({
appId : FB_config.API_ID,
status : true,
cookie : true,
xfbml : true,
oauth : true
});
FB.Event.subscribe('auth.statusChange', FBverifyLogin);
};
});
function FBverifyLogin(response) {
if (response.status === 'connected') {
checkPermissions(); // check permissions if the user is logged in
}
}
function checkPermissions(){
jQuery("#FBreauth").hide();
FB.api('/me/permissions', function(response) {
var permissions = FB_config.PERMISSIONS.split(",");
for(var i = 0; i < permissions.length; i++)
{
if(response.data[0][permissions[i]] == undefined || response.data[0][permissions[i]] != 1)
{
// user does not have full permissions, show reauth link
jQuery("#FBreauth").show();
break;
}
}
});
}
function FBreauth(){
FB.ui(
{
method: 'oauth',
display: 'popup',
app_id: FB_config.API_ID,
client_id: FB_config.API_ID,
redirect_uri: "http://www.facebook.com/connect/login_success.html",
scope: FB_config.PERMISSIONS
}
);
}
</script>
<a href="#" onclick="FBreauth(); return false;" id="FBreauth">App permissions have changes. Please reauthorize this app</a>