[Android 开发]Facebook 授权登录接入

最开始准备接入Facebook的sdk,但是客户要求跨平台和轻量级。所以选择了Facebook js版的sdk。

废话不多说看流程

在Facebook的后台中配置如下

clipboard.png

在前端的H5页面中添加js代码

web 跨平台接入:(JS)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

//facebook
    window.fbAsyncInit = function({
     FB.init({
      appId: '873******',
      cookie: true// enable cookies to allow the server to access
      // the session
      xfbml: true// parse social plugins on this page
      version: 'v2.2' // use version 2.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 = "//connect.facebook.net/en_US/sdk.js";
     fjs.parentNode.insertBefore(js, fjs);
    }(document'script''facebook-jssdk'));

调用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$("#facebook").click(function({
     FB.login(function(response{
      if (response.status === 'connected') {
       //native_onTryPlay(devicetype, JSON.stringify(response));
       //console.log(JSON.stringify(response));
       alert(JSON.stringify(response));
       native_showProgressDialog(devicetype);
       var data = "appid=" + appid + "&signedRequest=" + response.authResponse.signedRequest;
       $.ajax({
        type: "post",
        asyncfalse,
        dataType: "json",
        url: "../api/***/facebookLogin.php",
        data: data,
        success: function(msg{
         native_hideProgressDialog(devicetype);
         native_onFacebookLogin(devicetype, JSON.stringify(msg));
        },
        error: function(XMLHttpRequest, textStatus, errorThrown{
         native_hideProgressDialog(devicetype);
        }
       });
      }
     }, {
      scope: 'public_profile'
     });
    });

然后再后端处理请求参数就可以

这样ios和Android 就使用同一个Facebook 登录sdk。不用单独处理,如有疑问请咨询!