0

認証されたFacebookユーザーがFacebookページに関連付けられた特定のアルバムに写真を投稿できるようにするWebサイトを構築しています。このタスクにはJavaScriptSDKを使用しています。これは私がこれまでに持っているコードです:

window.fbAsyncInit = function () {
    FB.init({
        appId: "492414284132122",
        status: true,
        cookie: true,
        xfbml: true,
        channelUrl: "http://wineoclock.dev.mag/ClockMoments/channel.html"
    });
};

function uploadPhoto() {
    console.log("called uploadPhoto()...");
    FB.login(function (response) {
        if (response.authResponse) {
            document.getElementById("access_token").value = FB.getAuthResponse()["accessToken'];
            var form = document.getElementById("fbPhotoUpload");
            var formData = new FormData(form);
                    // indicate to user that upload is in progress
            document.getElementById("btnUpload").value = "Posting...";
            document.getElementById("btnUpload").disabled = true;
            // post photo to Facebook
            $.ajax({
                type: "POST",
                    // post to "Timeline Photos" album
                url: "https://graph.facebook.com/283773431737369/photos",
                data: formData,
                cache: false,
                contentType: false,
                processData: false,
                dataType: "json",
                success: function (response, status, jqXHR) {
                    console.log("Status: " + status);
                    if (!response || response.error) {
                        alert("Error occured:" + response.error.message);
                    }
                    else {
                        document.getElementById("fbPhotoUpload").reset();
                        $("#ThanksModal").reveal();
                    }
                    document.getElementById("btnUpload").value = "Post Photo";
                    document.getElementById("btnUpload").disabled = false;
                },
                error: function (jqXHR, status, errorThrown) {
                    console.log("AJAX call error. " + status);
                    console.log("errorThrown: " + errorThrown);
                },
                complete: function (jqXHR, status) {
                    console.log("AJAX call complete. " + status);
                }
            });
        }
        else {
            alert("Login failed: " + response.error);
        }
    });
}

上記のコードを実行すると、選択した画像がアップロードされていることがわかりましたが、ログインしているFacebookアカウントにアップロードされています。これは私が望んでいたことではありません。ログインしたユーザーではなく、ターゲットのファンページ(AJAX POSTリクエストで指定)にアップロードしたかったのです。

インターネットで、ユーザーアクセストークンの代わりにページアクセストークンを要求する必要があることを読みました。そのためには、ここのFacebookドキュメントで説明されているように、ターゲットページとしてログインする必要があります。

Facebookページの管理者としてログインせずにページアクセストークンを取得する方法はありますか?必要に応じて、ログインを舞台裏で行うことはできますか?

4

1 に答える 1

1

編集:私はあなたを誤解したと思います。私が投稿したリンクで説明されているプロセスにより、すべてのユーザーのアクセストークンが取得されます。これを行う必要があるのは一度だけです。

これは不可能だと強く信じています。実行可能であれば、事実上すべてのアプリが任意のファンページに投稿できます。

ここからの解決策によると: Extending Facebook Page Access Token、有効期間の短いページ アクセス トークンを有効期間の長いページ アクセス トークンに変換するには、管理者権限が必要です (実際には数時間ではなく 2 か月)。全体のプロセスはリンクでよく説明されています。

于 2013-05-23T23:14:30.060 に答える