关于Facebook与Twitter的第三方登录

Facebook 第三方登录

一:创建和配置开发者应用

https://developers.facebook.com


二:接下来就异步引用Facebook的sdk.js并调用初始化方法;

 1 window.fbAsyncInit = function() {
 2  FB.init({
 3  appId :'appid',
 4  xfbml : true,
 5  version : 'v2.9' //facebook登录版本
 6  });
 7 };
 8  //异步引入Facebook sdk.js
 9(function(d, s, id){
10  var js, fjs = d.getElementsByTagName(s)[0];
11  if (d.getElementById(id)) {return;}
12  js = d.createElement(s); js.id = id;
13  js.src = "//connect.facebook.net/en_US/sdk.js";
14  fjs.parentNode.insertBefore(js, fjs);
15}(document, 'script', 'facebook-jssdk'));


三: 在html中引入Facebook按钮标签、
// 这里的HTML代码可以是自己自定义的

四:定义checkLoginState方法登录并获取token并传给后台;
               var fbToken;
 2             function checkLoginState(){
 3                 FB.getLoginStatus(function(response) {
 4                     statusChangeCallback(response);
 5                 });
 6             }
 7             function statusChangeCallback(response) {
 8                 if (response.status === 'connected') {  //登陆状态已连接
 9                     fbToken = response.authResponse.accessToken;
10                     getUserInfo();
11                 } else if (response.status === 'not_authorized') { //未经授权
12                     console.log('facebook未经授权');
13                 } else {
14                     console.log('不是登陆到Facebook;不知道是否授权');
15                 }
16             }
17             //获取用户信息
18             function getUserInfo() {
19                 FB.api('/me', function(response) {
20                     //response.id / response.name
21                     console.log('Successful login for: ' + response.name);
22                     //把用户token信息交给后台
23                     self.location= '/home/login.fbLogin.do?accessToken='+fbToken;
24                 });
25             }


修改以上代码。appId : '{your-app-id}', 填写,你的应用ID。

即可成功调用。

可以根据实际情况做适当调整。如样式,登录提示等

1).还是先到Twitter开发者平台注册自己的应用;注册成功会得到appkey和API Secret。(在https://apps.twitter.com/上注册自己的app/web)

2).在https://auth-server.herokuapp.com/登录自己的Twitter账号;然后新建一个项目把在Twitter开发者平台注册得到的appkey和API Secret设置到这个项目中,注意一个appkey和API Secret只能设置一个域名,reference描述(举个例子如你的项目叫百度,那就写个百度),domain就是项目域名(主域名);grant_url可不填,我是填了的(https://api.twitter.com/oauth/access_token)。(最近不少博友问点击的时候Twitter登录框闪退。如果没在这个网址注册你的项目的话会有点击Twitter闪退的现象,请务必配置)

另外还可能出现闪退的原因可能就是在https://apps.twitter.com注册配置上的回调地址没有填写(Callback URL),这里的URL可以填写自己的一级域名;

在页面引入Twitter所需的js。其中要特别注意的是要引入 http://adodson.com/hello.js/dist/hello.all.js(这个是重点)

1 window.twttr = (function(d, s, id) {
 2      var js, fjs = d.getElementsByTagName(s)[0],
 3       t = window.twttr || {};
 4       if (d.getElementById(id)) return t;
 5       js = d.createElement(s);
 6       js.id = id;
 7       js.src = "https://platform.twitter.com/widgets.js";
 8       fjs.parentNode.insertBefore(js, fjs);
 9 
10       t._e = [];
11       t.ready = function(f) {
12           t._e.push(f);
13       };
14 
15       return t;
16 }(document, "script", "twitter-wjs"));

在页面上声明一个Twitter登录的button并监听登录事件。
<button class="twBtn" onclick = "login_twitter('twitter')" ></button>


初始化Twitter登录并定义login_twitter登录方法。

 1     
        var log = console.log;
        hello.init({
 2                 'twitter' : appkey
 3                 },
 4                 {
 5 //                      redirect_uri:'/', //代理后的重定向路径,可不填
 6                    oauth_proxy: 'https://auth-server.herokuapp.com/proxy' //这里使用默认的代理
 7                 });
 8             function login_twitter(network){  //登录方法,并将twitter 作为参数传入
 9                 // Twitter instance
10                 var twitter = hello(network);
11                 // Login
12                 twitter.login().then( function(r){
13                     // Get Profile
14                     return twitter.api('/me');
15                 }, log ) .then( function(p){
16                      console.log("Connected to "+ network+" as " + p.name);
19                      var res = JSON.stringify(p);//因为得不到token,但是这步已经得到用户所有信息,所以将用户信息转成JSON字符串给后台
21                      self.location= '/home/login.twLogin.do?result='+res;
22                 }, log );
23             }

以上就是Facebook和Twitter的第三方登录





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值