0

フェイスブックアプリを作りました。ここで、ポップアップ許可ボックスを使用してユーザー情報を取得する必要があります。ユーザーがアプリを認証した場合、Facebook は許可のためにダイアログ ボックスを開くべきではありませんが、ユーザーが初めてアプリにアクセスした場合は、ダイアログ ボックスを開く必要があります。私がここでやろうとしているのは...そして次のようなエラーが発生することです...

未定義のメソッド「showPermissionDialog」を呼び出せません

FB.getLoginStatus(function (response) {
               if (response.status === 'connected') {
                   alert("1");
                   // 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;
                   //alert(uid);
                   var accessToken = response.authResponse.accessToken;
                   jQuery("#<%= accessToken.ClientID %>").val(accessToken);
                   // alert(accessToken);
                   fqlQuerynew();
               } else if (response.status === 'not_authorized') {

                   // the user is logged in to Facebook,
                   // but has not authenticated your app
                   alert('not_authorized');

                   OnRequestPermission();
               } else {
                   alert("3");
                   //alert('the user isnt logged in to Facebook');
               }
           });


       };

       function OnRequestPermission() {
           var myPermissions = "publish_stream, manage_pages"; // permissions your app needs
           FB.Connect.showPermissionDialog("email,offline_access", function (perms) {
               if (!perms) {
                   alert("hi");
                   // document.location.href = 'YouNeedToAuthorize.html';
               } else {
                   alert("buy");
                   document.location.href = 'homePage.html';
               }
           });
       }
4

2 に答える 2

0

これはあなたのコードの修正版です。私はそれをテストしておらず、完全ではありませんが、何をすべきかについてのアイデアを与えるはずです:

FB.getLoginStatus(function (response) {
    if (response.status === 'connected') {
        var uid = response.authResponse.userID;
        var accessToken = response.authResponse.accessToken;
        jQuery("#<%= accessToken.ClientID %>").val(accessToken);
        fqlQuerynew();
    } else if (response.status === 'not_authorized') {
        OnRequestPermission();
    } else {
        ...
    }
});

function OnRequestPermission() {
    var myPermissions = "publish_stream, manage_pages"; // permissions your app needs
    FB.login(function(response) {
        if (response.status === 'connected') {
            FB.api("me/permissions", checkPermissions);
        }
        else {
            ....
        }
    }, { scope: "email,offline_access" });
}

function checkPermissions(response) {
    if (response.data && response.data.legth == 1) {
        var perms = response.data[0];
        // iterate over perms and check if the user has all needed permissions
    }
}
于 2012-05-26T11:13:01.587 に答える
0

コードからコピーして貼り付けただけの場合は、FB.getLoginStatus '};' の後に閉じ括弧を 1 つ追加したと思います。

それを削除した後、コードを試してください。うまくいかない場合は、ソーシャル ボタンをクリックした後やページの読み込み中など、ログイン ステータスを確認するタイミングを知ることができます。

于 2012-05-26T10:48:33.597 に答える