前端使用facebook login SDK

前端使用facebook login SDK

因为项目中需要使用facebook账号的第三方登录, 所以看了一下facebook的开发文档

一开始以为可以直接引入那个facebook JS SDK的js文件就可以

结果引入之后报错, 因为那份js文件使用了with语句, 而ES5的严格模式是不支持的

然后看了一下可以使用js动态引入

第一步, 引入登录SDK

(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 = "https://connect.facebook.net/en_US/sdk.js";
    fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));

只要在项目中执行了这段代码之后, 就会有一个全局对象FB

使用这个FB对象就可以调用sdk中的api实现登录操作

初始化你的应用

调用FB.init, 把应用编号等信息传入就可以了

window.fbAsyncInit = function() {
    window.FB = FB;
    FB.init({
    appId            : '应用编号',
    autoLogAppEvents : true,
    xfbml            : true,
    version          : 'v3.2'
    });
};

获取应用编号

获取引用编号首先要有一个facebook开发账号

登录账号并创建你的应用, 之后就可以在应用面板中->设置->基本中找到了

facebook开发官网

因为我是在vue项目中开发, 为了方便以后使用FB对象, 我直接在new Vue时的mounted钩子中执行了上面的代码

new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>',
  mounted(){
    window.fbAsyncInit = function() {
      FB.init({
        appId            : '应用编码',
        autoLogAppEvents : true,
        xfbml            : true,
        version          : 'v3.2'
      });
    };

    (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 = "https://connect.facebook.net/en_US/sdk.js";
       fjs.parentNode.insertBefore(js, fjs);
     }(document, 'script', 'facebook-jssdk'));
  }
})

调起登录窗口

接下来就可以在用户点击facebook登录时调用FB.login进行登录了

判断用户登录状态

在调用FB.login之前可以判断用户是否已经登录

使用FB.getLoginStatus(callback)函数, 该函数接收一个回调函数作为参数, 回调函数会接收一个代表用户状态和用户信息的对象

FB.getLoginStatus(function(response){
    // response: 包含了用户的登录状态
    ...
});

response对象**

response对象的status属性是一个字符串, 代表用户登录状态
status值说明
not_authorized用户登录了 Facebook,但未登录您的应用
unknown户未登录 Facebook,所以无法知道他们是否登录了您的应用
connected用户登录了 Facebook 和您的应用

如果为connected, 那么response对象就会有authResponse属性, 该属性包含了一些用户信息

authResponse值说明
accessToken应用用户访问令牌, 这个是最重要的东西
expiresIn表示口令到期且需要更新的 UNIX 时间
reauthorize_required_in登录过期和请求重新授权之前的时长
signedRequest经签名的参数
userID应用用户编号

用户未登录时登录

如果前面的用户登录状态不是connected, 则可以调用FB.login进行登录了

调用这个方法之后会有一个弹窗, 如果用户没有登录facebook账号, 这回显示输入框让用户登录

如果已经登录, 就会提示使用该账号登录你的应用

FB.getLoginStatus(function(response){
    if(response.status !== 'connected'){
        FB.login(res => {
            // 不管用户有没有登录都会有res
        })
    }
});

调用FB.login方法之后可以通过res知道用户是否登录了我的应用

如果登录了, 就会可以通过res获取用户的登录信息了

其他的信息获取

除了上面连个方法之外, FB对象还有很多方法

可以获取到用户更多的信息

我自己也没怎么研究, 因为我只要获取accessToken就可以了

需要的朋友可以自己研究一下文档, 研究完了也可以分享一下啊

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Facebook SDK登录,您需要遵循以下步骤: 1. 创建Facebook开发人员帐户并设置应用程序。 2. 在您的应用程序中包含Facebook SDK。 3. 配置您的应用程序以使用Facebook登录。 4. 实现Facebook登录按钮并使用Facebook SDK进行身份验证。 下面是一些更详细的步骤: 1. 创建Facebook开发人员帐户并设置应用程序: - 访问Facebook for Developers网站并创建一个新的开发人员帐户。 - 在Dashboard中创建一个新应用程序,并设置应用程序的名称和基本设置。 - 在设置中添加您的平台(iOS、Android等)和相关详细信息。 2. 在您的应用程序中包含Facebook SDK: - 使用CocoaPods或手动方式将Facebook SDK添加到您的项目中。 - 设置Facebook SDK的配置文件,并在应用程序启动时初始化SDK。 3. 配置您的应用程序以使用Facebook登录: - 在开发人员门户中的设置中,将Facebook登录设置为“启用”。 - 配置您的应用程序的Bundle ID和OAuth回调URL。 4. 实现Facebook登录按钮并使用Facebook SDK进行身份验证: - 将Facebook登录按钮添加到您的应用程序中,并将其链接到Facebook SDK的登录方法。 - 处理登录成功或失败的回调,并在成功的情况下使用Facebook SDK返回的访问令牌进行身份验证。 这些是一些基本步骤,但要实现Facebook登录,您需要更详细的指南和文档。Facebook开发人员门户提供了详细的文档和示例代码,可帮助您完成此过程。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值