使用Facebook登录网站
作者:秋了秋 发表时间:2016年08月08日
所谓Facebook登录网站,就是获取用户在第三方网站的资料,通过使用第三方网站的资料登录或者注册目标网站。这中间Facebook提供了相应接口,通过这个接口可以拿到相应的用户资料,从而进行第三方开发,而接口的代码已经整理好,只需要修改登录button元素和回调处理函数即可。参考代码如下:
function initFacebookLogin(){
var fbInitDefered = $.Deferred();
window.fbAsyncInit = function() {
FB.init({
appId : '888888888888888', //你的Facebook开发者id,需要先在facebook开发者中心生成一个
xfbml : true,
version : 'v2.3'
});
fbInitDefered.resolve(true);
};
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "https://connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
// 登录button点击事件绑定
$('.facebook-login').click(function() {
if(fbInitDefered.state()=="resolved"){
FBlogin();
}else{
//showNetErr();
}
});
}
// FB 登陆
function FBlogin() {
FB.login(function(response) {
if (response.status === 'connected') {
fetchingFBInfo(function (json){
var accessToken = response.authResponse.accessToken;
ajaxFBlogin(json,accessToken);
fbtrack_for_registration();
});
} else if (response.status === 'not_authorized'){
console.log('未授权!');
} else {
console.log(response);
console.log("请配置域名!");
}
},{scope: 'email'});
}
// 由于 fb sdk 使用了异步,必须使用回调才能保证数据同步
function fetchingFBInfo(onGetCallback) {
FB.api('/me', function(response) {
var email = response.email;
var firstName = response.first_name;
var familyName = response.last_name;
var gender = response.gender;
var graph = 'https://graph.facebook.com/' + response.id + '/picture?type=large';
onGetCallback({
email : email,
firstName : firstName,
familyName : familyName,
gender : gender,
graph : graph
});
});
}
// 获取到信息之后的回调函数处理,一般用于登录自身网站
function ajaxFBlogin(json,accessToken) {
//*******
console.log(json);
console.log(accessToken);
请书写你的登录请求ajax!
//获取到的信息都存在json里面,可以通过json.xxx来获取信息
}
initFacebookLogin();
红色部分必须修改成自己的,然后最后一个函数自己发挥。还有一个需要注意的是,需要到开发者那去把网址加入白名单(授权)。
3
文章作者: “秋了秋”个人博客,本站鼓励原创。
转载请注明本文地址:http://netblog.cn/blog/454.html