Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 像facebook登录插件这样的插件是如何构建的?_Javascript_Php_Facebook_Html_Plugins - Fatal编程技术网

Javascript 像facebook登录插件这样的插件是如何构建的?

Javascript 像facebook登录插件这样的插件是如何构建的?,javascript,php,facebook,html,plugins,Javascript,Php,Facebook,Html,Plugins,插件如何在不暴露太多信息的情况下与facebook服务器通信 我想知道我如何能建立自己的插件,将它之间的网站和我的网站安装沟通 我的知识仅限于HTML5、CSS3、PHP5、Javascript和一些Jquery。 我意识到可能有很多方法,我只是想知道你是否能给我指出正确的方向,或者给我一个想法。(:提前谢谢 在developers.facebook.com上创建应用程序 下载facebook SDK for PHP,因为这是您所知道的() 阅读他们关于如何实现登录的指南(这很简单,也很有帮助)

插件如何在不暴露太多信息的情况下与facebook服务器通信

我想知道我如何能建立自己的插件,将它之间的网站和我的网站安装沟通

我的知识仅限于HTML5、CSS3、PHP5、Javascript和一些Jquery。 我意识到可能有很多方法,我只是想知道你是否能给我指出正确的方向,或者给我一个想法。(:提前谢谢

  • 在developers.facebook.com上创建应用程序
  • 下载facebook SDK for PHP,因为这是您所知道的()
  • 阅读他们关于如何实现登录的指南(这很简单,也很有帮助)
  • 这是一个示例PHP函数,您可以基于此函数进行构建:

    function facebook_login()
    {
        $user = new user();
    
        // Call Facebook API
        if (!class_exists('FacebookApiException')) {
            require_once ('facebook.php');
        }
    
        $facebook = new Facebook(array(
            'appId' => $app_id,
            'secret' => $app_secret,
        ));
        $fbuser = $facebook->getUser();
    
        if ($fbuser) {
            try {
                // Proceed knowing you have a logged in user who's authenticated.
                $me = $facebook->api('/me'); //user
                $uid = $facebook->getUser();
            }
            catch(FacebookApiException $e) {
                echo error_log($e);
                return;
            }
        }
    
        // redirect user to facebook login page if empty data or fresh login requires
        if (!$fbuser) {
            $loginUrl = $facebook - getLoginUrl(array(
                'redirect_uri' => $_SERVER["HTTP_REFERER"],
                false
            ));
            $logout = $facebook->getLoginUrl();
            echo $loginUrl;
            return;
        }
    
        // user details
        $user->name = $me['name'];
        $user->email = $me['email'];
        $user->fbid = $uid;
    
        // Check user id in your database
        $user->selectbyfbid();
        if ($user->database->rows > 0) {
            // User exist, Show welcome back message
            // User is now connected, log him in
        }
        else {
            // User is new, Show connected message and store info in our Database
            // Insert user into Database.
            $user->insert_fb();
        }
    
        $_SESSION["access_token"] = $facebook->getAccessToken();
        login_user($user);
    }
    
    在HTML中:

    <a href="#" onclick="LoadingAnimate();">
        <div class="fb-login-button" 
            onlogin="javascript:CallAfterLogin();" 
            data-width="600" data-max-rows="1" 
            data-show-faces="false" 
            scope="publish_stream,email,publish_actions,offline_access">
    
    
    
    JavaScript代码:

    function CallAfterLogin(){
        FB.login(function(response) {       
            if (response.status === "connected") 
            {
                LoadingAnimate(); //show a waiting gif or whatever
                FB.api('/me', function(data) {
                    if(data.email == null)
                    {
                        //Facbeook user email is empty, you can check something like this.
                        ResetAnimate();
    
                    }else{
                        AjaxResponse();
                    }
                });
            }
        });
    }
    function AjaxResponse()
    {
        var myData = 'connect=1&action=fb_login';
        jQuery.ajax({
            type: "POST",
            url: "/process_user.php",
            dataType:"html",
            data:myData,
            cache: false,
            success:function(response){
                if(target.length > 1)
                    window.location.href = target;
                else
                    location.reload();
            },
            error:function (xhr, ajaxOptions, thrownError){
            //$("#results").html('<fieldset style="color:red;">'+thrownError+'</fieldset>'); //Error
            }
        });
    }
    
    函数CallAfterLogin(){
    FB.login(函数(响应){
    如果(response.status==“已连接”)
    {
    LoadingAnimate();//显示等待的gif或其他内容
    FB.api('/me',函数(数据){
    如果(data.email==null)
    {
    //Facbook用户电子邮件为空,您可以检查以下内容。
    重置动画();
    }否则{
    AjaxResponse();
    }
    });
    }
    });
    }
    函数AjaxResponse()
    {
    var myData='connect=1&action=fb_login';
    jQuery.ajax({
    类型:“POST”,
    url:“/process\u user.php”,
    数据类型:“html”,
    数据:myData,
    cache:false,
    成功:功能(响应){
    如果(target.length>1)
    window.location.href=目标;
    其他的
    location.reload();
    },
    错误:函数(xhr、ajaxOptions、thrownError){
    //$(“#结果”).html(“”+thrownError+“”);//错误
    }
    });
    }
    
    我希望这能帮助你开始!

    看看,它让你很容易做到这一点,如果你有机会,请阅读,它详细解释了你想做什么


    几年前,我写道,它现在和那时一样重要(尽管现在有更多的浏览器支持postMessage)。

    没有解决这个问题。@SeanKinsey你是100%正确的……我不知道我在想什么:D