IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 前端接入facebook登录、登出功能 -> 正文阅读

[JavaScript知识库]前端接入facebook登录、登出功能

开发步骤

1. 需要在facebook官网(https://developers.facebook.com/)注册开发者账号;
1. 创建应用;
2. 配置相关参数,拿到应用编号appid和AppSecret。

前端授权

1. 配置地址

- 配置js SDK允许使用的网域(这个必须的!
- 配置回调地址(非必须如果项目中使用了客户端授权登录,或者纯服务端登录,通过回调拿到参数,则需要配置
配置回调地址。这里以网页版的授权为例,如果开发网页版的Facebook授权登录,需要在Facebook后台配置有效OAuth跳转URL,就是用户在Facebook登录页面登录成功之后需要回调到部署你自己的登录页面的服务器地址。

2. 引入授权登录SDK

Facebook官方提供了详细的说明,也有现成的sdk和完整的demo。官方文档: https://developers.facebook.com/docs/facebook-login/web

方法一: 通过在index.html内加入script

<!--appId 写上开发者-->
<script async defer crossorigin="anonymous" src="https://connect.facebook.net/zh_CN/sdk.js#xfbml=1&version=v12.0&appId=你的appid&autoLogAppEvents=1">
</script>

方法二:写一个fb.ts,引入登录sdk,以及配置信息,供业务中使用

// fb.ts
//??引入登录SDK
export?const?fbJsdk?=?()?=>?{
??(function?(d:?any,?s:?any,?id:?any)?{
????var?js;?var?fjs?=?d.getElementsByTagName(s)[0];
????if?(d.getElementById(id))?{?return;?}
????js?=?d.createElement(s);?js.id?=?id;
????(js?as?any).src?=?'https://connect.facebook.net/zh_CN/sdk.js';
????(fjs?as?any).parentNode.insertBefore(js,?fjs);
??}(document,?'script',?'facebook-jssdk'));
??//?初始化
??(window?as?any).fbAsyncInit?=?function?()?{
????//?@ts-ignore:
????//?eslint-disable-next-line?no-undef
????FB.init({
??????appId:?'这是应用编号appid',?//?应用编号
??????autoLogAppEvents:?true,
??????xfbml:?true,
??????version:?'v12.0'
????});
??}
}

TIP:

一般情况下可以直接将fb.ts直接在vue的main.ts中使用。

只要在项目中执行了这段代码之后, 就会有一个全局对象FB。使用这个FB对象就可以调用sdk中的api实现登录操作。

但是可能会导致url携带重要参数时,暴露给bacebook。因为加载facebook sdk时,会通过get请求给facebook发送一些验证信息,其中就会传过去当前的页面的url3

3. Vue页面中调用fb登录

const?login?=?()?=>?{
??//?检查用户登录状态
??FB.getLoginStatus(function?(response)?{
????if?(response.status?!==?'connected')?{
??????//?未登录,fb会让用户登录
??????FB.login((res)?=>?{
????????//?不管用户有没有登录都会有res
????????console.log('FB.login',?res)
        facebookPost(res.authResponse)
??????})
????}?else?{ 
      // 已登录过,fb直接返回response
??????console.log('FB.getLoginStatus已登录',?response)
      facebookPost(response.authResponse)
????}
??})
}
//?将FB数据传给后台,进行用户登录操作
const?facebookPost?=?(authResponse:?any)?=>?{
    ...http请求...
}

这个网页不能直接用浏览器打开,需要部署在支持https的服务器上。

?登录过程的截图:

??登录成功之后可以看到控制台打印出了登录成功后Facebook返回的信息,有accessToken、userID等:

{
    status: 'connected',
    authResponse: {
        accessToken: '{access-token}',
        expiresIn:'{unix-timestamp}',
        reauthorize_required_in:'{seconds-until-token-expires}',
        signedRequest:'{signed-parameter}',
        userID:'{user-id}'
    }
}

4. Vue页面中调用fb登出

const?signOut?=?()?=>?{
??console.log('登出')
??FB.logout(function?(response:?any)?{
????console.log('FB.logout登出',?response)
??})
}

后端校验

?前端拿到登录token后,需要后端校验一下,防止别人拿其他平台的appId授权的token来请求。 ?所以上面从facebook拿到的response里,前端必须得给后端accessToken、userID。accessToken用来校验授权,userID用来标识用户。

TIP:配置测试用户

在应用没正式上架前,可以使用测试用户账号来测试应用。上架后,也可以使用测试用户账号。

?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 11:22:00  更:2022-02-26 11:25:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:35:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码