web-dev-qa-db-ja.com

FacebookグラフAPIを使用して長期アクセストークンを取得できません

作業中のWebサイトにFacebookを統合し、次の手順に従って長期アクセストークンを取得しようとするのは初めてです: https://developers.facebook.com/docs/facebook-login/ access-tokens / ここでGraph API Explorerを使用している場合でも: https://developers.facebook.com/tools/Explorer/ 以下を入力し、AppIDとAppSecretを入力してGet AccessTokenを押したときに取得する現在のトークン...

GET/oauth/access_token?
grant_type = fb_exchange_token&
client_id = {app-id}&client_secret = {app-secret}&fb_exchange_token = {short-lived-token}

返品があります

{"エラー": "無効な応答"}

誰かが私が間違っているかもしれないこと、またはこの長期トークンを取得する際にあなたのために働くより詳細な手順について詳しく説明できますか?.

私はこのスレッドで何が起こっているのかを追跡しようとしました Facebookページアクセストークン-これらは期限切れになりますか? これ以上成功しません。どんな助けでも大歓迎です。

あなたの時間と助けをありがとう。乾杯、

-ライアン

16
StafHat

long-lived user tokenを使用してGraph API Explorerを取得することはできません。次の宛先にGETリクエストを送信する必要があります。

https://graph.facebook.com/oauth/access_token?
grant_type=fb_exchange_token&
client_id={app-id}& client_secret={app-secret}& fb_exchange_token={short-lived-token}

ブラウザで確認できます。

page access tokenが必要な場合は、neverの有効期限が切れるトークンを使用できます。ここで受け入れられた回答を確認してください: サーバーからFacebookファンページに投稿するための長期的なトークンを取得する手順は何ですか

22
Sahil Mittal

それで、私はこれを再検討し、私が書いたドキュメントを提供して、他の誰かがこれを実現するのに役立つことを願っています!

[〜#〜] 1つ[〜#〜]。アプリケーションの作成

アクセスしたいページのユーザーに関連付けられたアプリケーションを作成します。

[〜#〜] two [〜#〜]。必要な情報を入手する

アプリを作成したら、2つの重要な情報が必要になります。

アプリID:[〜#〜] aaaaa [〜#〜](長さは約15文字である必要があります)

アプリの秘密:[〜#〜] bbbbb [〜#〜](長さは約32文字である必要があります)

これらを使用して https://developers.facebook.com/tools/Explorer に移動します。上部のドロップダウンボックスから正しいアプリケーションを選択してください。

Get Access Tokenをクリックして、「新しい」トークンを取得します。

ここでは、特定のアプリの目的に適した権限を選択する必要があります。

[〜#〜] ccccc [〜#〜](最大200文字の長さである必要があります)

[〜#〜] 3 [〜#〜]。長寿命トークンを取得(2か月)

次に、クエリを実行して長期(2か月)トークンを取得するために必要な情報を取得する必要があります。

https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id= {app-id}&client_secret = {app-secret}&fb_exchange_token = {short-lived-token}

{app-id}、{app-secret}、{short-lived-token}を、これまでにメモした3ビットの情報に置き換えます。

次のようなリクエストを受け取る必要があります。

https://graph.facebook.com/oauth/access_token?%20grant_type=fb_exchange_token&%20client_id=AAAAA&%20client_secret=BBBBB&%20fb_exchange_token=CCCCC

このクエリをインターネットブラウザのURLバーに配置します。次のような応答がウィンドウに表示されます。

access_token = DDDDD&expires = 5184000

[〜#〜] ddddd [〜#〜](最大200文字の長さである必要があります)

[〜#〜] 4 [〜#〜]。テストトークン(パート1)

強調表示された部分を次のデバッグサイトの入力に入力した場合:

https://developers.facebook.com/tools/debug/

それはあなたに約2ヶ月の有効期限を与えるはずです。

[〜#〜] 5 [〜#〜]。有効期限のないページトークンを取得する

ここで、この新しい長寿命トークンに注目します。これを使用して、関連付けられたアプリケーションがユーザーのアクセスから削除されるか削除されない限り、有効期限が切れないトークンを取得します。リクエストを行う際には、ページ名またはできればページIDのいずれかを使用します。

FacebookページIDは、次のようなものを使用して取得できます http://findmyfacebookid.com/ ページIDを[〜#〜] eeeee [〜#と呼びます。 〜]

https://graph.facebook.com/ {page-id} /?fields = access_token&access_token = {long-live-token}

次のようなリクエストを受け取る必要があります。

https://graph.facebook.com/EEEEE/?fields=access_token&access_token=DDDDD

これにより、次のようなものが返されます。{"access_token": "FFFFF"、 "id": "131062838468"}

[〜#〜] fffff [〜#〜](最大200文字の長さである必要があります)

[〜#〜] 6 [〜#〜]。テストトークン(パート2)

強調表示された部分を取得してデバッグページに入力すると、トークンが期限切れにならないことを示すものが表示され、期限切れのないページトークンの取得に成功しているはずです。

[〜#〜] 7 [〜#〜]。ハイタッチ!

これを実現する方法のリストが長いことをお詫びしますが、小さなスニペットだけでなく、プロセス全体を提供する方がよいと思います。これが役に立った場合、またはいずれかの手順を実行するためのより良い方法がある場合は、お知らせください。

11
StafHat

Facebook PHP SDKは、ログインに成功して短命のトークンを取得した後、短命のトークンを使用して長命のトークンを取得するメソッドをすでに実装しています。簡単な呼び出し

$result = $facebook->setExtendedAccessToken();

$ resultがnullの場合は、長期間有効なアクセストークンを取得したことを意味します。

1
Hieu Vo

クライアント側

        if (response.status === 'connected') {
            {
                event.preventDefault();
                FB.login(function (response) {
                    if (response.authResponse) {
                        var profileId = response.authResponse.userID;
                        var accessToken = response.authResponse.accessToken;
                        var e = response.authResponse.accessToken;
                        document.getElementById('token').innerHTML = e;
                        var profileName = "";
                        var pagesList = "";
                        var isPage = 0;
                        var type = "fb";
                        $.ajax({
                            url: "WebService1.asmx/getlonToken",
                            type: "POST",
                            dataType: 'json',
                            data: '{accessToken:"' + accessToken + '"}',
                            contentType: "application/json; charset=utf-8",
                            async: true,
                            success: function (response) {
                                accessToken = response.d;
                                document.getElementById('status').innerHTML = accessToken;
                            },
                            error: function (e) {
                                alert('Error' + e);
                            }
                        });



                    }
                }, { scope: 'user_about_me,friends_about_me,user_activities,friends_activities,user_birthday,friends_birthday,user_education_history,friends_education_history,user_events,friends_events,user_groups,friends_groups,user_hometown,friends_hometown,user_interests,friends_interests,user_likes,friends_likes,user_location,friends_location,user_notes,friends_notes,user_photos,friends_photos,user_relationships,friends_relationships,user_relationship_details,friends_relationship_details,user_status,friends_status,user_videos,friends_videos,user_website,friends_website,email,manage_pages,publish_stream,read_stream,read_page_mailboxes,read_insights, read_mailbox' });

            }

サーバ側

   [WebMethod]
    public string getlonToken(string accessToken)
    {
        var fb = new FacebookClient(accessToken);
        dynamic result = fb.Get("oauth/access_token", new
            {
                client_id = 123,
                client_secret = "123fff45",
                grant_type = "fb_exchange_token",
                fb_exchange_token = accessToken,
                scope = "user_about_me,friends_about_me,user_activities,friends_activities,user_birthday,friends_birthday,user_checkins,friends_checkins,user_education_history,friends_education_history,user_events,friends_events,user_groups,friends_groups,user_hometown,friends_hometown,user_interests,friends_interests,user_likes,friends_likes,user_location,friends_location,user_notes,friends_notes,user_photos,friends_photos,user_relationships,friends_relationships,user_relationship_details,friends_relationship_details,user_religion_politics,friends_religion_politics,user_status,friends_status,user_videos,friends_videos,user_website,friends_website,email,manage_pages,publish_stream,read_stream,read_page_mailboxes,read_insights,ads_management"
            });

        fb.AccessToken = (string)result["access_token"];
        return fb.AccessToken;
    }
}
0
nouman arshad