rocker/facebook-login

一个允许使用 Facebook 认证登录到 PHP-Rocker 应用的包(https://github.com/victorjonsson/PHP-Rocker)

1.0.5 2013-05-19 07:37 UTC

This package is not auto-updated.

Last update: 2024-09-23 13:52:49 UTC


README

将此包安装到您的 Rocker 应用 中,您将获得一个 RESTful API,可以认证使用 Facebook 身份登录的用户。

本安装指南假设您已具备关于 composer 的基本知识

1) 安装 PHP-Rocker

在这里您可以了解更多关于 如何开始使用 PHP-Rocker 的信息

2) 添加 Facebook 登录包

composer.json 中的应用需求中添加 "rocker/facebook-login" : "1.*" 并在控制台运行 composer update

3) 编辑 config.php

在 config.php 文件中,您需要添加您的 Facebook 应用程序数据,并将认证类更改为 Rocker\FacebookLogin\Authenticator。您还必须添加 Facebook 连接操作。

return array(
    ...

    'application.operations' => array(
        ...
        'facebook/connect' => '\\Rocker\\FacebookLogin\\Connect'
    ),

    'application.auth' => array(
        'class' => '\\Rocker\\FacebookLogin\\Authenticator',
        'mechanism' => 'facebook realm="your.website.com"'
    ),

    ...

    'facebook' => array(

        'id' => 'Facebook app id',
        'secret' => 'Facebook app secret',

        # (Optional) Comma separated string with data fields in the facebook response that
        # should saved as user meta when the user gets connected
        'connect_data' => 'birthday,locale',

        # (Optional) Comma separated string with authentication mechanisms that should be disabled
        'disabled_auth_mechanisms' => 'rc4,basic',
    )

);

4) 实现

以下示例使用了 rocker.js 与 Facebook JavaScript SDK 一起。

<html>
<head></head>
<body>
    <button id="login-button">Login with FB</button>

    <script src="/scripts/rocker.js"></script>
    <script src="//#/en_US/all.js"></script>

    <script>

    // Initiate FB
    FB.init({
        appId      : FB_APP_ID,
        status     : true,
        cookie     : false,
        oauth      : false
    });

    // Instantiate the Rocker server
    var rocker = new Rocker('https://api.mywebsite.com/');

    var onFacebookLogin = function() {

        // Connect user
        rocker.request({
            path : 'facebook/connect?access_token='+FB.getAccessToken(),
            method : 'POST',
            onComplete : function(status, json, http) {

                // set facebook auth data
                rocker.auth = 'facebook '+FB.getAuthResponse().userID+':'+FB.getAccessToken();

                // From here on you can access any operation that requires authentication
                rocker.me(function(rockerUser) {
                    console.log(rockerUser);
                });
            }
        });

    };

    // When user clicks on login button
    document.getElementById('login-button').onclick = function() {

        // Check login status
        FB.getLoginStatus(function(response) {
            if (response.status === 'connected') {
                onFacebookLogin();
            } else {

                // Login
                FB.login(function(response) {
                    if(response.status == 'connected') {
                        onFacebookLogin();
                    }
                }, {scope: 'email,user_birthday,user_location'});
            }
        });
    };

    </script>
</body>
</html>