这可能是一个基本问题。而且我的英语也很差...
我有一个需要 Facebook 登录的网络服务。使用 JavaScript SDK,我可以获取用户的基本信息,例如用户 ID、姓名、性别。现在大约有10000个用户。
这一次,我需要访问用户的电子邮件地址。我知道我可以通过添加范围属性从新用户那里获取电子邮件地址。但是,对于现有用户,虽然我可以访问电子邮件地址,但我不知道如何显示授权对话框以获取访问电子邮件地址的权限。
任何想法?提前致谢!
这可能是一个基本问题。而且我的英语也很差...
我有一个需要 Facebook 登录的网络服务。使用 JavaScript SDK,我可以获取用户的基本信息,例如用户 ID、姓名、性别。现在大约有10000个用户。
这一次,我需要访问用户的电子邮件地址。我知道我可以通过添加范围属性从新用户那里获取电子邮件地址。但是,对于现有用户,虽然我可以访问电子邮件地址,但我不知道如何显示授权对话框以获取访问电子邮件地址的权限。
任何想法?提前致谢!
下面是我使用过的代码片段。基本上使用 /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>