1

Javascript FB.getLoginStatusを使用したFacebookログインは、ある場合には機能し、他の場合には機能しません。

これは機能します:

//view
<script type="text/javascript">
function f1() {
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
    FB.api('/me', function(response) {
      alert(response.name + " " + response.id);
      name1 = response.name;
      uid1 = response.id;
    });
    // var uid = response.authResponse.userID;
    // var accessToken = response.authResponse.accessToken;
  } else if (response.status === 'not_authorized') {
    // the user is logged in to Facebook, 
    // but has not authenticated your app
  } else {
    // the user isn't logged in to Facebook.
  }
 });
}
</script>

<%= content_for :body_attributes, "onload='f1();'" %>

これは動作しません

// view
<script type="text/javascript">
function f1() {
    // same definition as above
    }
 </script>

<script type="text/javascript"> {
f1()
    }
 </script>

2番目のコードが機能しない理由がわかりません。ありがとう!

4

2 に答える 2

0
<script type="text/javascript"> 
{
    f1()
}
 </script>

中かっこを削除してセミコロンを追加すると、問題がないはずです。

<script type="text/javascript"> 
    f1();
 </script>
于 2012-07-22T01:13:16.580 に答える
0

これは機能します:

//view
<script type="text/javascript">
function f1 {
FB.getLoginStatus(function(response) {

JavaScript で関数を定義する方法ではないため、これが機能するとは信じがたいことです。関数名の後に丸括弧 () がありません。

[コメントから] FB.api はイベントによってトリガーされる必要はありませんか?

いいえ、そうではありません。どこからでも呼び出すことができます。

ポップアップ ウィンドウ (FB.login、FB.ui) を作成する (/する可能性がある) メソッドだけを使用する場合は、通常、クリックなどのユーザー インタラクションでそれらを呼び出す方が適切です。ポップアップ。

于 2012-07-22T08:00:23.957 に答える