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

首先Facebook:

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

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

 1 window.fbAsyncInit = function() {
2  FB.init({
3  appId :'appid',
4  xfbml : true,
5  version : 'v2.6' //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'));

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

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

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

 1         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 }

至此;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(这个是重点)

 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"));

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

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

5).初始化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 }

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

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

详细介绍请查看全文:https://cnblogs.com/qianzf/
原文博客的链接地址:https://cnblogs.com/qzf/

网站如何集成Facebook和Twitter第三方登录的更多相关文章

  1. 分享前端Facebook及Twitter第三方登录

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

  2. java网站如何集成facebook第三方登录

    第一次接触Facebook第三方登录,可能有些地方做的并不全面,只是尝试着做了一个小demo,因为国内接入Facebook的项目并不多,并且多数都是Android或iOS的实现,所以资料也特别少,在此 ...

  3. 国外流行的共享网站实现:facebook,twitter,google+1,tumblr等待

    近期需要做相关的国外几个站点共享,本来我以为它会和weibo.在同样的烦恼空间,什么appkey啦,apptoken啦.api啦.结果非常意外的发现并非如此恼火. Twitter分享: https:/ ...

  4. 集成Facebook和Twitter的Model动画-b

    这个动画.  感谢大神分享 JPPopPresentAnimation.gif 要实现这个功能分两步走:第一步,先实现这个动画.第二步,0行代码集成到项目.也就是,你不用改原有项目的任何代码,只要把写 ...

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

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

  6. 第三方登录开发-Facebook

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

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

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

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

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

  9. GitHub OAuth 第三方登录示例教程

    这组 OAuth 系列教程,第一篇介绍了基本概念,第二篇介绍了获取令牌的四种方式,今天演示一个实例,如何通过 OAuth 获取 API 数据. 很多网站登录时,允许使用第三方网站的身份,这称为&quo ...

随机推荐

  1. appium+python自动化33-解锁九宫格(TouchAction)

    TouchAction 1.源码可以在这个路径找到:Lib\site-packages\appium\webdriver\common\touch_action.py class TouchActio ...

  2. java web 程序---刷新页面次数进一步

    <%@ page language="java" import="java.util.*" pageEncoding="gb2312" ...

  3. Python模块包(pycharm右键创建文件夹和python package的区别)中__init__.py文件的作用

    在eclipse中用pydev开发Python脚本时,我遇到了一个这样的现象,当我新建一个pydev package时,总会自动地生成一个空的__init__.py文件,因为是python新手,所以很 ...

  4. Docker for windows 7 - 加载 docker images

    背景 由于之前一直是在 Linux 上面跑,所以对于docker for windows 部分不是很熟. 由于我们的合作伙伴需要在windows 上面跑我们的docker image, 所以在自己的w ...

  5. Centos7 可执行程序自定义为系统服务

    systemctl的使用相比以往系统服务的/etc/init.d的启动脚本的方式变动也比较大,但变的更简单更易用了,同firewalld一样,运行原理一目了然,对于初学者来说,只要做过一两次练习,就能 ...

  6. python 之 Collections模块

    官方文档:https://yiyibooks.cn/xx/python_352/library/collections.html 参考: https://blog.csdn.net/songfreem ...

  7. python学习笔记(七):面向对象编程、类

    一.面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想.在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一 ...

  8. Julia - 整数型

    所有的基础数据类型通过灵活用户可扩展的类型提升系统 ,不需显式类型转换,就可以互相运算 整数的默认类型,取决于系统是 32 位还是 64 位 julia> typeof(1) # 32 位系统 ...

  9. Centos7 / RHEL 7 双网卡绑定

    http://www.cnblogs.com/hukey/p/6224969.html 1. 简要    双网卡绑定技术在centos7中使用了teaming技术,而在rhel6/centos7中使用 ...

  10. Itext读取PDF模板文件渲染数据后创建新文件

    Maven导入依赖 <properties> <itextpdf.version>5.5.0</itextpdf.version> <itext-asian. ...