1

我已经在 stackoverflow 中搜索了一个完整的示例或一些博客,这些示例解释了如何使用 javascript sdk 制作 facebook 登录服务器端应用程序,但没有找到任何东西。

我搜索了 developer.facebook.com 网站,我唯一得到的是一个 php 示例https://developers.facebook.com/docs/howtos/login/server-side-login/。问题是我必须使用 JavaScript。

我为什么要这样做?原因是我想将文件上传到服务器(google-app-engine(Java Sdk))并使用 facebook 用户 ID 将它们保存在数据库中,并通过他的用户 ID 检索它们。

另一个问题是,如果他动态上传,我该如何调试我的 javascript 代码?代码辅助呢?

4

2 回答 2

1

那么我可以帮你解决这个问题。如果你需要使用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'
                    });
                }
            }
        }
   });
于 2012-12-30T18:05:30.947 回答
0

取自 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

于 2012-12-30T10:15:49.727 回答