第三方登陆实践之基于OAuth的FACEBOOK Web Login(最新版)

7 篇文章 0 订阅
订阅专栏
2 篇文章 0 订阅
订阅专栏

Facebook 登录简介

Facebook 登录是在多个平台供用户创建帐户并登录应用的便捷方式。它可用于 iOS、Android、Web、Windows Phone、桌面应用和智能电视、物联网对象等设备。

Facebook 登录功能可打造以下体验:

  • 创建帐户
    Facebook登录让用户能够快速轻松地在应用内创建帐户,无需设置密码,避免今后忘记密码的麻烦。这一简单方便的体验可以产生更高的转化量。用户在一个平台上创建帐户后,通常只需轻轻一点就可以在所有其他平台上登录应用。获得有效的邮箱信息意味着您可以在今后联系相关用户,重新吸引他们使用应用。

  • 个性化
    对于用户来说,个性化体验更具吸引力,因而能够产生更高的留存率。使用 Facebook登录功能,您可以获得难以通过注册表单收集或收集起来很麻烦的信息。即便只是将 Facebook 头像导入应用,也会加强用户对应用的归属感。

  • 社交
    许多用户留存率高的应用都让用户能够与他们的好友建立联系,促进应用内体验的分享。通过 Facebook登录功能,您可以了解哪些应用用户相互之间也是 Facebook 好友,以便连接用户,创造价值。

众多在应用中部署了 Facebook 登录的开发者实现了卓越成效,包括应用登录人数大增,参与度提升,使用 Facebook 登录的用户数量持续增长。
本文主要介绍利用 JavaScript SDK 部署网页版“Facebook 登录”,将Facebook登陆应用于Web网页。

Facebook登陆实践

1.首先,登陆 Facebook开发者平台注册账号。

官网链接已经给出,注册一个开发者账号即可。

2.然后,新建应用APP

在这里插入图片描述
创建好新应用后可以看到自己的应用编号和应用密钥,后面写代码需要用。
在APP基本设置里面,填写必要的信息,联系邮箱、应用域名、隐私权政策网址、商业用途和类别、以及Web网站的地址,如果是本地开发环境,可以这样填: http://localhost:XXXX/XXXX
隐私权政策网址当时试了几个URL都没成功,后来发现填这个是可以的: http://wp4fb.com/how-to-add-a-privacy-policy-to-your-apps/

3.在应用APP中的产品(PRODUCTS)添加Facebook登陆(Facebook Login)

在这里插入图片描述

Facebook登陆设置里面,填写必要的信息,然后发布应用APP。
有一点需要注意,Facebook规定自2018 年 10 月 6 日起,所有应用都需要使用 HTTPS(HTTPS协议更加的安全)。即对跳转 URI 和 JavaScript SDK 强制使用 HTTPS。
如果你是在本地开发环境下工作,那么需要给localhost添加SSL证书并实现HTTPS,此篇就不会详细介绍了。
APP上线成功如下图所示。

4.部署网页版Facebook 登录

通过采用 JavaScript 版 Facebook SDK 的“Facebook 登录”,用户可以使用 Facebook 登录信息登录您的网页。

实施登陆功能步骤

  • 输入跳转网址,让用户跳转到 successful-login 页面。
  • 检查登录状态,了解用户是否已登录您的应用。
  • 通过“登录”按钮或“登录”对话框让用户登录,并请求一系列数据权限。 让用户退出,允许用户离开应用。

①输入跳转网址
在应用面板中选择您的应用,然后前往产品 > Facebook 登录 > 设置。在 OAuth 客户端授权设置下的有效 OAuth 跳转网址字段中输入您的跳转网址以获得成功授权。

②检查登录状态
调用 FB.getLoginStatus检查登录状态,此函数会触发 Facebook 调用,获取登录状态,并调用包含结果的回调函数。

FB.getLoginStatus(function(response) {
    statusChangeCallback(response);
});

提供给回调的 response 对象包括许多字段:

{
    status: 'connected',
    authResponse: {
        accessToken: '...',
        expiresIn:'...',
        reauthorize_required_in:'...'
        signedRequest:'...',
        userID:'...'
    }
}

status 表示应用用户的登录状态。status 可以是下列之一:

  • connected — 用户登录了 Facebook 和您的应用。
  • not_authorized — 用户登录了 Facebook,但未登录您的应用。
  • unknown — 用户未登录 Facebook,所以无法知道他们是否登录了您的应用。或者已经调用 FB.logout(),因此无法连接至 Facebook。
  • 如果状态为 connected,则响应对象将包括 authResponse,分为以下部分:
    accessToken — 包括应用用户的访问口令。
    expiresIn — 表示口令到期且需要更新的 UNIX 时间。
    reauthorize_required_in - 登录过期和请求重新授权之前的时长(以秒为单位)。
    signedRequest — 经签名的参数,其中包括应用用户的信息。 userID — 应用用户的编号。

③让用户登录
提示用户登录的两种方式:

  • 使用“登录”按钮。
  • 使用 JavaScript SDK 中的 FB.login()

FB.login(function(response){
// Handle the response object, like in statusChangeCallback() in our demo
// code.
});

④让用户退出
可以向按钮或链接添加 JavaScript SDK 函数 FB.logout,让用户可以退出应用

FB.logout(function(response) {
   // Person is now logged out
});

SpringBoot配置好了HTTPS,并实现HTTP访问自动转HTTPS访问,自己也通过OpenSSL给localhost 添加 SSL 证书,在本地开发环境中实现了HTTPS,但由于并非官方CA签发的证书,所以chrome依然认为本网址是不安全的,在这里点击继续前往localhost即可。
在这里插入图片描述
点击FACEBOOK登陆。
在这里插入图片描述
完成登陆,重定向到网页地址,返回当前状态。We are connected.
在这里插入图片描述
登陆成功后就可以获取用户信息,可以是用户名、头像、朋友列表等等, 可以很容易地在HTML中的function getInfo()函数里面设置,本文只获取了response id。
在这里插入图片描述

5.源代码

Controller中添加Login Controller

@RequestMapping("/login")
    public String login() {
        return "Facebook.html";
    }

HTML代码如下

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title></title>
    <link rel="stylesheet" href="">
</head>
<body>
<script>
    // initialize and setup facebook js sdk
    window.fbAsyncInit = function() {
        FB.init({
            appId      : '279184756036492',
            cookie     : true,
            xfbml      : true,
            version    : 'v3.2'
        });
        FB.getLoginStatus(function(response) {
            if (response.status === 'connected') {
                document.getElementById('status').innerHTML = 'We are connected.';
                document.getElementById('login').style.visibility = 'hidden';
            } else if (response.status === 'not_authorized') {
                document.getElementById('status').innerHTML = 'We are not logged in.'
            } else {
                document.getElementById('status').innerHTML = 'You are not logged into Facebook.';
            }
        });
    };
    (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 = "//connect.facebook.net/en_US/sdk.js";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));

    // login with facebook with extra permissions
    function login() {
        FB.login(function(response) {
            if (response.status === 'connected') {
                document.getElementById('status').innerHTML = 'We are connected.';
                document.getElementById('login').style.visibility = 'hidden';
            } else if (response.status === 'not_authorized') {
                document.getElementById('status').innerHTML = 'We are not logged in.'
            } else {
                document.getElementById('status').innerHTML = 'You are not logged into Facebook.';
            }
        }, {scope: 'email'});
    }

    // getting basic user info
    function getInfo() {
        FB.api('/me', 'GET', {fields: 'first_name,last_name,name,id'}, function(response) {
            document.getElementById('status').innerHTML = response.id;
        });
    }
</script>

<div id="status"></div>
<button onclick="getInfo()">Get Info</button>
<button onclick="login()" id="login">Login</button>
</body>
</html>

总结

本文主要介绍了利用 JavaScript SDK将Facebook登陆应用于Web网页,希望能对大家有所帮助~ 有问题欢迎留言交流,不足之处还请多多指正。

Twitter report
04-27
关于Twitter建立,使用等 report
使用SpringBoot+OkHttp+fastjson实现Github的OAuth第三方登录
10-15
主要介绍了使用SpringBoot+OkHttp+fastjson实现Github的OAuth第三方登录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Spring Security OAuth2集成短信验证码登录以及第三方登录
08-27
主要介绍了Spring Security OAuth2集成短信验证码登录以及第三方登录,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
java Web第三方登录实现(基于OAuth2.0,包含Github和QQ登录,附源码)完整源码
02-16
java Web第三方登录实现(基于OAuth2.0,包含Github和QQ登录,附源码)
web-oauth-app:第三方登录服务 Web OAuth 示例
05-11
声明 该项目只是用户走通整个第三方的流程,并写出对应的思路,代码不提供参考价值,因为太渣! 使用技术 后端基于 + 数据库基于 MySQL 前端样式基于 代码托管于 示例链接 数据库 请注意修改 src/config/adapter.js 中 MySQL 数据库配置。 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for `oauth` -- ---------------------------- DROP TABLE IF EXISTS `oauth`; CREATE TABLE `oauth` ( `id` int(11) NOT NULL AUTO_INCREMENT, `type` char(50) NOT NULL C
Basic Facebook Login Source:寻找不使用FB sdk的简单方法来使用FB登录方法吗?-开源
05-09
寻找不使用FB sdk的简单方法来使用FB登录方法吗? 然后,您很幸运,因为这是可以使用的最简单的Facebook登录方法。 要求-计时器-文本框1“用户名”-文本框2“密码”-Button1“登录”就这么简单,不需要任何其他插件! 进一步了解它@http://mecode.vysilhq.com/2014/08/visual-basic-facebook-login-without-sdk.html
Facebook第三方登录流程总结
点滴汇聚,智在积累。——Danny
04-23 1万+
这里写自定义目录标题开通Facebook开发者账号新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 开通Face...
facebook第三方登录前后端分离
weixin_52455398的博客
02-20 1923
facebook第三方登录三种实现方式: 1.js sdk 直接在官网看文档 直接调用他的sdk 官网:https://developers.facebook.com/docs/facebook-login/web 2.自己抒写在服务端验证方式第三方登录: 2.1首先登录facebook 注册自己应用 2.2然后配置一些回调地址 回调地址自己可以内网穿透实现一下 2.3其次就是 如下图的 应用编号,和应用密钥一会需要 ...
Facebook登录(Login Button)
冻僵的企鹅'zone
12-20 1万+
facebook提供了一个及其简单的登录方式:Login Button(以下简称fbButton): 这里就说一下如何使用fbButton: 1.先将facebook的sdk引入你的工程(可以去官网下载,然后拖拽或者使用Cocoapods引入) 2.去facebook创建你的app(https://developers.facebook.com/apps,官网有视频说明如何申
三方登录之Facebook登录
weixin_45732936的博客
03-03 344
【代码】三方登录之Facebook登录。
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
10-19
下面小编就为大家带来一篇浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Facebook Oauth2.0 API调用方法以及常用接口和Twitter API的使用
11-23
Facebook Oauth2.0 API调用方法以及常用接口和Twitter API的使用
Facebook Login for iOS
kakukemeit的专栏
12-25 2940
Facebook Login for iOS The Facebook SDK for iOS provides various login experiences that your app can use to authenticate someone. This document includes all the information you need to know in order
FaceBook Login 的坑
Jason_HD的博客
12-10 2996
1.Key Hashes 的坑 注意:开发FaceBook登录时 需要上传Key Hashes到FaceBook developer 使用本地的Keystore生成的Key Hashes 和googlePlay的签名不一样 切记 上传到GooglePlay上后抓紧再找出新的签名 填写上去https://blog.csdn.net/kxfeng1/article/details/79...
facebook login 申请 app_id 和 app_secret
热门推荐
Terry - 专注外贸B2C
02-14 2万+
1.访问 https://developers.facebook.com 在Facebook Login的右边点击Get Start 勾选选项,填写登录成功回调的url地址。 保存成功后,点击左侧的Dashborad,查看app id 和 app secret代码。 到这里
Facebook login for Desktop application
子非鱼,安知鱼之乐?
07-26 2117
Facebook is a popular social network portal, more and more applications are developed integrating facebook functions such as post on the wal
Facebook认证登录
Elion_jia的博客
01-14 3725
原文链接:https://developers.facebook.com/apps/934011906804843/fb-login/quickstart/ JavaScript 版 Facebook SDK 无需下载和安装任何独立文件,您只需在 HTML 中添加一小段正确的 JavaScript,即可将 SDK 异步加载至您的页面。异步加载不会阻止浏览器加载页面的其他元素。 以下代码片段将提...
Facebook第三方登录对接
爱码士段先森的博客
10-26 4487
java 第三方账号登录
oauth2.0第三方支付
最新发布
05-18
OAuth 2.0 是一种授权框架,主要用于获取第三方应用程序的访问权限。如果你要使用 OAuth 2.0 实现第三方支付,可以使用 OAuth 2.0 的授权机制来获取用户的访问令牌,然后使用该令牌与第三方支付机构进行交互。 具体来说,你可以通过以下步骤实现第三方支付: 1. 用户在你的应用程序中选择需要购买的商品或服务,并点击支付按钮。 2. 你的应用程序向第三方支付机构发送支付请求,包括订单金额等信息。 3. 第三方支付机构返回一个支付页面或者二维码给用户。 4. 用户在支付页面或者通过扫描二维码完成支付,第三方支付机构将支付结果返回给你的应用程序。 5. 你的应用程序通过 OAuth 2.0 的授权机制获取用户的访问令牌。 6. 你的应用程序使用访问令牌与第三方支付机构进行交互,查询支付结果并更新订单状态。 需要注意的是,使用 OAuth 2.0 实现第三方支付需要考虑安全性和隐私保护的问题,如何保证用户的支付信息不被恶意攻击者获取和滥用。因此,建议你在实现过程中遵循最佳实践,并且使用可靠的第三方支付机构。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 第三方登陆实践之基于OAuth的FACEBOOK Web Login(最新版) 6851
  • 深入理解OAuth2.0&基于OAuth2.0第三方登录之GitHub实践 4554
  • 深入理解CSRF攻击与防御 1841
  • 深入理解Cookie、Session、Token 1229
  • 深入理解XSS攻击与防御 1018

分类专栏

  • 内推
  • 前端技术 3篇
  • Web发展 1篇
  • 第三方登陆 2篇
  • 网络与信息安全 7篇

最新评论

  • 深入理解OAuth2.0&基于OAuth2.0第三方登录之GitHub实践

    小C的博客: 第三方登陆之后 是还要在自己的服务注册信息吗?

  • 深入理解OAuth2.0&基于OAuth2.0第三方登录之GitHub实践

    「已注销」: 你倒是贴一下代码啊

  • Spring Boot中实现HTTPS for localhost

    云胡不喜丶: 整挺好

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 深入理解XSS攻击与防御
  • 深入理解CSRF攻击与防御
  • 深入理解Cookie、Session、Token
2018年9篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

聚圣源描写人物外貌的成语纯净水水厂起名大全易经起名八字美少女战士中文版我们的爱情女孩姓史起那个名字好courage是什么意思无法忍受张姓起名字大全女孩名字lol起个名字禁忌咒纹垂直打击下载许银川公司起名 测试名孩子起名五行缺什么寄秋作品集2021牛年刘姓男宝宝起名生辰八字在线起名软件户外商标起名户外商标名称人肉叉烧包1给学校起的名字吗6月21都市异能小说快餐盒饭外卖起名1982年属狗公司起名1987年日历新生儿起名姓李相约星期六起名志战神2中文版下载淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化