1

私は Facebook アプリ環境を初めて使用します。私は小さなアプリケーションを開発しています。プロジェクトでソーシャルデータを使用して、いくつかの条件を確認しようとしています。FB から返された JSON オブジェクトに正しい方法でアクセスしているかどうかはわかりませんが、ここに問題があります。

現在のファイルから別の jsp またはサーブレットに firstname を送信したいと考えています。そこで、jsp変数を作成し、Facebookから取得したレスポンスオブジェクトに'name'の値を代入してみました。

jsp ファイルの末尾に名を出力しようとすると、名の出力が空になります。オブジェクトで名前と性別の値を使用して、それを別の jsp ファイルまたはサーブレット ファイルに送信するにはどうすればよいですか?

解決策を見つけるために私の頭を叩いてください。誰か助けてください!

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                       "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Facebook authentication usage</title>
  </head>
  <body>

  <%! String firstname="";
        String lastname="";
        String middlename="lynne";

    %>



  <div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
                                        // init the FB JS SDK
                                        FB.init({
                                        appId      : '532238706811106', // App ID from the App Dashboard
                                        //channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File for x-domain communication
                                        status     : true, // check the login status upon init?
                                        cookie     : true, // set sessions cookies to allow your server to access the session?
                                        frictionlessRequests : true,
                                        xfbml      : true  // parse XFBML tags on this page?

                                            });

    // Additional initialization code such as adding Event Listeners goes here


    FB.getLoginStatus(function(response) {
                                            if (response.status === 'connected') 
                                            {

                                                // the user is logged in and has authenticated your
                                                // app, and response.authResponse supplies
                                                // the user's ID, a valid access token, a signed        
                                                // request, and the time the access token 
                                                // and signed request each expire   
                                                var uid = response.authResponse.userID;
                                                var accessToken = response.authResponse.accessToken;
                                                 FB.api('/me', function(response) 
                                                            {
                                                                console.log(response); 
                                                                console.log('Good to see you, ' + response.name + '.');
                                                                 firstname=firstname+response.name;
                                                                 lastname=lastname+response.last_name;
                                                                 document.write(response.name+middlename);
                                                            });
                                            } 
                                            else if (response.status === 'not_authorized') 
                                            {
                                                // the user is logged in to Facebook, 
                                                // but has not authenticated your app
                                                var oauth_url = 'https://www.facebook.com/dialog/oauth/';
                                              oauth_url += '?client_id=532238706811106'; //Your Client ID
                                              oauth_url += '&redirect_uri=' + 'https://apps.facebook.com/newjsp'; //Send them here if they're not logged in
                                              //oauth_url += '&scope=user_about_me,email,user_location,user_photos,publish_actions,user_birthday,user_likes';

                                              window.top.location = oauth_url;

                                            } 
                                            else 
                                            {
                                                // the user isn't logged in to Facebook.

                                                window.top.location ='https://www.facebook.com/index.php';
                                            }
                        });

  };
  // Load the SDK's source Asynchronously
  // Note that the debug version is being actively developed and might 
  // contain some type checks that are overly strict. 
  // Please report such bugs using the bugs tool.
  (function(d, debug)
          {
                var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
                if (d.getElementById(id)) {return;}
                js = d.createElement('script'); js.id = id; js.async = true;
                js.src = "//connect.facebook.net/en_US/all" + (debug ? "/debug" : "") + ".js";
                ref.parentNode.insertBefore(js, ref);
            }(document, /*debug*/ false));


</script>
  <h1>this is a sample to test facebook authentication
        Welcome <%=firstname+""+lastname+middlename%></h1>

        <%out.print(firstname+""+lastname+""+middlename); %>

   </body>
</html> 
4

1 に答える 1

0

これは、その値に設定firstnameして""も決して変更しないためです。

JavaScript コードでfirstname=firstname+response.name;は、Java コードで以前に定義された String 変数を設定しません。代わりに、JavaScript コードでのみ表示できる新しい変数を設定します。

Java コードはサーバー側で実行されますが、JavaScript はクライアント側で実行されます。これらは 2 つの完全に異なるプログラムであり、完全に異なる場所で異なる時間に実行されます。このような理由から、クライアント側とサーバー側の両方のコードを同じファイルに記述することはお勧めしません。

問題の解決策として、Facebook 用の Java API を探して、JSP がレンダリングされる前にそれを使用できるようにするか、JavaScript コードでのみ FB から返されたデータにアクセスすることをお勧めします。Java、JavaScript、サーバー側、およびクライアント側のコードの違いについて読むこともお勧めです。

于 2013-03-08T11:15:49.450 に答える