簡體   English   中英

facebook使用javascript sdk登錄服務器端應用程序

[英]facebook login Server-side Apps with javascript sdk

我已經在stackoverflow上搜索了完整的示例或某個博客,該博客解釋了如何使Facebook使用javascript sdk登錄到服務器端應用程序,但未找到任何內容。

我搜索了developer.facebook.com網站,唯一得到的是一個PHP示例https://developers.facebook.com/docs/howtos/login/server-side-login/ 問題是我必須使用JavaScript。

我為什么要這樣做? 原因是我想將文件上傳到服務器(google-app-engine(Java Sdk)),並使用facebook用戶ID將其保存在數據庫中,並通過其用戶ID進行檢索。

另一個問題是,如果他動態上傳我的JavaScript代碼,我該如何調試?代碼幫助又如何?

好吧,我可以為您解決這個問題。 如果需要使用FB的JS SDK,則必須在客戶端或瀏覽器上進行所有操作,因為Facebook在服務器端不支持Java。

因此,我建議您可以在客戶端上對用戶進行身份驗證,定義訪問用戶配置文件的范圍,一旦由用戶進行身份驗證,您將獲得響應作為JSON對象,可以使用ajax將其發送到AppEngine后端。

我正在共享我使用FB登錄的鏈接,並訪問用戶的個人資料信息以及他在相冊和視頻中的照片。

http://demositeunicfyp.appspot.com/fb-pictures.html

http://demositeunicfyp.appspot.com/facebook.html

您可以在瀏覽器中調試JS代碼,以查看從Facebook API獲得的響應對象類型。

$(document).ready(function() {
        // Initializing the Facebook SDK
        FB.init({
            appId : 'XXXXXXXXXXXXXXXX',
            status : true,
            cookie : true,
            xfbml : true,
            oauth : true
        });

        // Method to check if a user is looged in to FB or Not
        FB.getLoginStatus(updateButton);

        $("#logout").live("click", function(event) {
            event.preventDefault();
            // FB.getLoginStatus(updateButton);
            FB.logout(function(response) {
                $("#loginDiv").show();
                $("#logoutDiv").hide();
            });
        });


        $("#fbLoginButton").live("click", function(event) {
            //event.preventDefault();
            FB.getLoginStatus(updateButton);
        });

        function updateButton(response) {
            var button = document.getElementById("fbLoginButton");

            if (response.authResponse) {
                // user is already logged in and connected
                // button.innerHTML = 'Facebook Logout';
                //$("#loginDiv").hide();
                //$("#logoutDiv").show();
                //window.location = '/confirm';

                FB.api('/me', function(response) {
                    $("#userName").text(response.name);
                    $("#userEmail").text(response.email);
                });

            } else {
                // user is not connected to your app or logged out
                // button.innerHTML = 'Facebook Login';

                button.onclick = function() {
                    FB.login(function(response) {
                        if (response.authResponse) {
                            // button.innerHTML = 'Facebook Logout';
                            $("#loginDiv").hide();
                            $("#logoutDiv").show();

                            FB.api('/me', function(response) {
                                $("#userName").text(response.name);
                                $("#userEmail").text(response.email);
                            });
                        } else {
                            //user cancelled login or did not grant authorization hence do nothing
                        }
                    }, {
                        scope : 'email,publish_actions'
                    });
                }
            }
        }
   });

取自SDK下載中的JS.php

  <?php

require '../folderTo/facebook.php';

$facebook = new Facebook(array(
  'appId'  => '',
  'secret' => '',
));

// See if there is a user from a cookie
$user = $facebook->getUser();

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
  $user_profile = $facebook->api('me?fields=photos');  } catch (FacebookApiException $e) {
    echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>';
    $user = null;
  }
}

?>
<!DOCTYPE html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
  <body>
    <?php if ($user) { ?>
      Your user profile is
      <pre>
        <?php print htmlspecialchars(print_r($user_profile, true)) ?>
      </pre>
    <?php } else { ?>
      <fb:login-button></fb:login-button>
    <?php } ?>
    <div id="fb-root"></div>
    <script>
      window.fbAsyncInit = function() {
        FB.init({
          appId: '<?php echo $facebook->getAppID() ?>',
          cookie: true,
          xfbml: true,
          oauth: true
        });
        FB.Event.subscribe('auth.login', function(response) {
          window.location.reload();
        });
        FB.Event.subscribe('auth.logout', function(response) {
          window.location.reload();
        });
      };
      (function() {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol +
          '//connect.facebook.net/en_US/all.js';
        document.getElementById('fb-root').appendChild(e);
      }());
    </script>
  </body>
</html>

這里的工作示例: http : //slicethegreen.com/examples/js.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM