最近公司要求做海外的第三方登录;目前只做了Facebook和Twitter;国内百度到的信息太少VPN FQ百度+Google了很久终于弄好了。但是做第三方登录基本上都有个特点就是引入必须的js,设置appkey/appId;然后调用登录方法即可得到用户信息。

首先Facebook:

1).在Facebook开发者平台注册自己的application;然后得到appid和应用密钥;

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

 window.fbAsyncInit = function() {
 2  FB.init({
 3  appId :'appid',
 4  xfbml : true,
 5  version : 'v2.6' //facebook登录版本
 6  });
 };
  //异步引入Facebook sdk.js
(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);
}(document, 'script', 'facebook-jssdk'));

3).在html中引入Facebook按钮标签

 <fb:login-button scope="public_profile,email"   onlogin="checkLoginState();"></fb:login-button> <!-- 点击登录时触发checkLoginState(),此方法自定义 -->

4).定义checkLoginState方法登录并获取token并传给后台;

         var fbToken;
             function checkLoginState(){
                 FB.getLoginStatus(function(response) {
                     statusChangeCallback(response);
                 });
             }
             function statusChangeCallback(response) {
                 if (response.status === 'connected') {  //登陆状态已连接
                     fbToken = response.authResponse.accessToken;
                     getUserInfo();
                 } else if (response.status === 'not_authorized') { //未经授权
                     console.log('facebook未经授权');
                 } else {
                     console.log('不是登陆到Facebook;不知道是否授权');
                 }
             }
             //获取用户信息
             function getUserInfo() {
                 FB.api('/me', function(response) {
                     //response.id / response.name
                     console.log('Successful login for: ' + response.name);
                     //把用户token信息交给后台
                     self.location= '/home/login.fbLogin.do?accessToken='+fbToken;
                 });
             }

至此;Facebook第三方登录前端就完成了!

接下来是Twitter;

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注册自己的app的时候一定要把Callback URL填上。不然也会出现闪退。我的Callback URL填的跟一级域名一样

如下配置:

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

 window.twttr = (function(d, s, id) {
      var js, fjs = d.getElementsByTagName(s)[0],
       t = window.twttr || {};
       if (d.getElementById(id)) return t;
       js = d.createElement(s);
       js.id = id;
       js.src = "https://platform.twitter.com/widgets.js";
       fjs.parentNode.insertBefore(js, fjs);

       t._e = [];
       t.ready = function(f) {
           t._e.push(f);
       };

       return t;
 }(document, "script", "twitter-wjs"));

4).在页面上声明一个Twitter登录的button并监听登录事件。

 <button class="twBtn" onclick = "login_twitter('twitter')" ></button>

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

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

完成Twitter第三方登录前端代码。

以上就是Facebook和Twitter的第三方登录;给大家一个参考,有不对的地方希望大家指正。谢谢!

PS:此次修改是最近同事和一些园友问的时候发现自己写少了点东西;此次修改的是Twitter登录的第3条引入的js那如有问题需要可加我QQ:615541371咨询。 2016/09/23 10:35

分享前端Facebook及Twitter第三方登录的更多相关文章

  1. 网站如何集成Facebook和Twitter第三方登录

    最近公司要求做海外的第三方登录:目前只做了Facebook和Twitter;国内百度到的信息太少VPN FQ百度+Google了很久终于弄好了.但是做第三方登录基本上都有个特点就是引入必须的js,设置 ...

  2. 移动端折腾国外分享(facebook、twitter、linkedin)

    一.前言 国内做HTML5页面,关注最多就是微信分享了,之前也写过关于微信分享的文章,可以点击查看:分享相关文章 再者,就是国内的其它分享,比如常用的新浪微博.腾讯微博.QQ空间等等,最方便的就是直接 ...

  3. Android Facebook和Twitter登录和分享完整版

    最近公司的软件需要改国际版,需要Facebook和Twitter的登录和分享. 本人先用Umeng的第三方社会化分享实现了该功能,但是后来一想问题来了,经过查证.Umeng只在中国和美国有服务器,那也 ...

  4. 第三方登录开发-Facebook

    这次这个项目要分别可以使用新浪微博,qq互联以及Facebook和Twitter授权登录 facebook目前只支持oauth2技术,个人理解其工作流程是当用户想访问当前网站,却不想注册账号,此时当前 ...

  5. 用 Flask 来写个轻博客 (23) — 应用 OAuth 来实现 Facebook 第三方登录

    目录 目录 前文列表 扩展阅读 第三方登录流程 OAuth 应用 OAuth 实现 Facebook 第三方登录 实现效果 前文列表 用 Flask 来写个轻博客 (1) - 创建项目 用 Flask ...

  6. 第三方登录 ----转载自简书,作者 <<碧霄问鼎>>

    这几天遇到一个需求:做第三方登录和分享.遇到了一些坑,把整个过程整理记录下来,方便他人,同时也捋一下思路. 当时考虑过把每个平台的SDK下载下来,一个一个弄,一番取舍后决定还是用ShareSDK.这里 ...

  7. iOS - Share 分享/第三方登录

    1.系统方式创建分享 按照下图在 Info.plist 文件中将 Localization native development region 的值改为 China.如果不设置此项弹出的分享页面中显示 ...

  8. Android Facebook和Twitter分享

    1. 背景 在年初的时候,公司的项目有个新的需求,在英文版的应用中加入Facebook和Twitter分享功能. 2. 完成情况 由于这个项目比较急,所以开发这个功能从预研到接入总共耗时一周.后来,在 ...

  9. Android记录16-友盟第三方登录、分享实现

    Android开发记录16-友盟第三方登录.分享实现 2014年博客之星,投票地址username=wwj_748#content" style="font-family: Kai ...

随机推荐

  1. Java虚拟机各内存区域的位置及功能的介绍

    Java虚拟机运行时数据区: 相关区域介绍: 程序计数器: 功能:当前线程所执行字节码的行号指示器.若是Java方法记录指令地址,若为Native方法,则不记录 隔离性:线程隔离 Error:无 Ja ...

  2. jQuery实现的简单小功能(实用)

    1.返回顶部使用JQuery的animate和scrollTop方法可以创建简单地返回顶部的动画: // Back to top $('#top').click(function (e) { e.pr ...

  3. C#中的简单工厂和单例

    下面首先来说说简单工厂 举个例子: 首先是父类 public abstract class Pizza { public abstract string Info(); } } 子类 public c ...

  4. Powershell获取磁盘信息

    使用Powershell完成系统管理实在是太方便了,磁盘信息获取只需几行代码即可. 1: $DiskCount = ((Get-WmiObject -Class Win32_DiskDrive).Ca ...

  5. 【7集iCore3基础视频】7-6 Quartus II 13.1安装

    Quartus II 13.1安装:高清源视频:链接:http://pan.baidu.com/s/1csVRMA 密码:lkth 视频勘误:http://pan.baidu.com/s/1mhCIq ...

  6. MySQL数据的主从复制、半同步复制和主主复制详解

    一.MySQL复制概述 ⑴.MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费 ...

  7. php进程占用大量cpu优化

    使用TOP 命令发现php进程占用大量的cpu,达到100%,需要优化. 1 ll /proc/6264/fd 查看进程正在使用的资源 2 strace -p 6264 追踪进程正在做的事情 引用 h ...

  8. Windows 7 IE主页被篡改,如何修复?

    有时我们的电脑会因为病毒的入侵,使得IE主页被篡改,然后就会被没底线的广告包围,有时用杀毒软件也不修复,那么此时应该怎么修复呢?其实很简单,只需几步,就可以让您的电脑重新清净下来. 第一步 点击“开始 ...

  9. Swift 语法篇

    一.输出语句 print("Hello World") print("Hello World 11", "Hello World 22", ...

  10. 2017年8个UI设计流行趋势

    设计趋势变化的理由需要考虑各种各样的因素.让我们来一起看看2017年的设计流行趋势吧. 应用界面的设计趋势是不断变化的.随着时间的推移他也在不断的成长,进化.虽然有些趋势还有待检验,但我们还是需要不断 ...