分享前端Facebook及Twitter第三方登录
最近公司要求做海外的第三方登录;目前只做了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第三方登录的更多相关文章
- 网站如何集成Facebook和Twitter第三方登录
最近公司要求做海外的第三方登录:目前只做了Facebook和Twitter;国内百度到的信息太少VPN FQ百度+Google了很久终于弄好了.但是做第三方登录基本上都有个特点就是引入必须的js,设置 ...
- 移动端折腾国外分享(facebook、twitter、linkedin)
一.前言 国内做HTML5页面,关注最多就是微信分享了,之前也写过关于微信分享的文章,可以点击查看:分享相关文章 再者,就是国内的其它分享,比如常用的新浪微博.腾讯微博.QQ空间等等,最方便的就是直接 ...
- Android Facebook和Twitter登录和分享完整版
最近公司的软件需要改国际版,需要Facebook和Twitter的登录和分享. 本人先用Umeng的第三方社会化分享实现了该功能,但是后来一想问题来了,经过查证.Umeng只在中国和美国有服务器,那也 ...
- 第三方登录开发-Facebook
这次这个项目要分别可以使用新浪微博,qq互联以及Facebook和Twitter授权登录 facebook目前只支持oauth2技术,个人理解其工作流程是当用户想访问当前网站,却不想注册账号,此时当前 ...
- 用 Flask 来写个轻博客 (23) — 应用 OAuth 来实现 Facebook 第三方登录
目录 目录 前文列表 扩展阅读 第三方登录流程 OAuth 应用 OAuth 实现 Facebook 第三方登录 实现效果 前文列表 用 Flask 来写个轻博客 (1) - 创建项目 用 Flask ...
- 第三方登录 ----转载自简书,作者 <<碧霄问鼎>>
这几天遇到一个需求:做第三方登录和分享.遇到了一些坑,把整个过程整理记录下来,方便他人,同时也捋一下思路. 当时考虑过把每个平台的SDK下载下来,一个一个弄,一番取舍后决定还是用ShareSDK.这里 ...
- iOS - Share 分享/第三方登录
1.系统方式创建分享 按照下图在 Info.plist 文件中将 Localization native development region 的值改为 China.如果不设置此项弹出的分享页面中显示 ...
- Android Facebook和Twitter分享
1. 背景 在年初的时候,公司的项目有个新的需求,在英文版的应用中加入Facebook和Twitter分享功能. 2. 完成情况 由于这个项目比较急,所以开发这个功能从预研到接入总共耗时一周.后来,在 ...
- Android记录16-友盟第三方登录、分享实现
Android开发记录16-友盟第三方登录.分享实现 2014年博客之星,投票地址username=wwj_748#content" style="font-family: Kai ...
随机推荐
- centos7 最小化安装没有ifconfig及修改网卡名enoxxx为ethX
问题: 1.最小化安装centos7后发现无ifconfig命令 想通过ifconfig查看ip地址发现ifconfig命令不存在,可通过命令 #ip addr //查看ip 或者 解决: ...
- SSH框架简化
通过对ssh框架有了基础性的学习,本文主要是使用注解的方式来简化ssh框架的代码编写. 注意事项: 1.运行环境:Windows 8-64位,Eclipse(开发工具),jdk1.8.0_91,Tom ...
- 使用Java开发高性能网站需要关注的那些事儿
无论大型门户网站还是中小型垂直类型网站都会对稳定性.性能和可伸缩性有所追求.大型网站的技术经验分享值得我们去学习和借用,但落实到更具体的实践上并不是对所有网站可以适用,其他语言开发的网站我还不敢多说, ...
- MyBatis学习总结(一)——MyBatis快速入门(转载)
本文转载自http://www.cnblogs.com/jpf-java/p/6013537.html MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了 ...
- 安装GIT,集成到Powershell中
1.首先安装GIT http://msysgit.github.io 下载最新版,然后安装.没什么好说的. 装完之后,把 安装路径/bin 加入到环境变量的Path中 2.删除Git的右键菜单 安装完 ...
- input checkbox属性-Indeterminate状态
我们在使用input标签,多选框时,通常会看到两种状态,即选中(checked)和被选中(unchecked). // 选中状态也可写成checked="checked" chec ...
- JavaScript对象属性(一)
对象object 对象和数组很相似,数组是通过索引来访问和修改数据,对象是通过属性来访问和修改数据的. 这是一个示例对象: var cat = { "name": "W ...
- Immutable api example
var temp=[{name:"kitty",age:31},{name:"ff",age:22},{name:"kitty",age:4 ...
- Spring Data JPA
转自: http://www.cnblogs.com/WangJinYang/p/4257383.html Spring 框架对 JPA 的支持 Spring 框架对 JPA 提供的支持主要体现在如下 ...
- Renci.SshNet在Linux运维的应用
SSH.NET是一个.net的SSH应用库,支持并发.该库最新的代码可以从github上下载下来,比Sharp.SSH更新的频繁.它可以模拟ssh登陆,类似xshell.putty等工具.不过有更多的 ...