vuecli获取facebook用户邮箱、头像并登录

一、第一种方法利用hello.js,首先在facebook开发者里注册你的应用,参考http://www.imooc.com/article/79629

这种可以获取图片,无法获取email,查了一下要添加fileds

provider.api({
  path:'/me?fields=name,first_name,last_name,email',
  name:'Hello'
}).then( (r) => {}

二、第二种方法利用 JavaScript SDK,参考https://developers.facebook.com/docs/facebook-login/web

<template>
  <a href="javascript:void(0)" id="login">FaceBook</a>
</template>
mounted() {
  window.fbAsyncInit = function () {
    FB.init({ appId: '填写申请的appid', cookie: true, xfbml: true, oauth: true });

   // if (typeof facebookInit == 'function') {
      $('#login').click(function () {
        FB.login(function(response){
          console.log(response)
          statusChangeCallback(response);  //登录回调函数

        },{ scope :'email'});
      })
    //}
  };

  (function(d){
    var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
    js = d.createElement('script'); js.id = id; js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    d.getElementsByTagName('head')[0].appendChild(js);
  }(document));

  var statusChangeCallback = function (response){
    if (response.status === 'connected') {
      var accessToken = response.authResponse.accessToken; //取得 accessToken
      //获取用户个人信息
      FB.api('/me?fields=name,first_name,last_name,email', function(response) { // /me为API指定的调用方法,用于获取登陆用户相关信息
        console.log(response)
        if(response.email!=null){
          console.log(response.id)
          //获取用户头像
         FB.api(
                  response.id+'/picture',
                  'GET',
                  {"redirect":"false"},
                  function(pic) {
                    console.log(pic)
                    getBase64(pic.data.url)
                      .then(function(base64){
                        console.log(base64);
                        //将base64转换成文件
                        self.postImg();//这个方法看更改用户头像那篇
                      },function(err){
                        console.log(err);//打印异常信息
                      });
                    //传入图片路径,返回base64
                    function getBase64(img){
                      function getBase64Image(img,width,height) {//width、height调用时传入具体像素值,控制大小 ,不传则默认图像大小
                        var canvas = document.createElement("canvas");
                        canvas.width = width ? width : img.width;
                        canvas.height = height ? height : img.height;

                        var ctx = canvas.getContext("2d");
                        ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
                        var dataURL = canvas.toDataURL();
                        return dataURL;
                      }
                      var image = new Image();
                      image.crossOrigin = '';
                      image.src = img;
                      var deferred=$.Deferred();
                      if(img){
                        image.onload =function (){
                          deferred.resolve(getBase64Image(image));//将base64传给done上传处理
                        }
                        return deferred.promise();//问题要让onload完成后再return sessionStorage['imgTest']
                      }
                    }
                  }
                );
          
        }else{
          alert("XXX.");
        }
      });
    }
  };
},
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值