2013-09-06 47 views
16

私が取り組んでいるウェブサイトにFacebookを統合し、ここに記載されている手順に従って長期アクセストークンを取得するのが初めてです:https://developers.facebook.com/docs/facebook-login/access-tokens/ ここでグラフAPIエクスプローラ:https://developers.facebook.com/tools/explorer/ 私は次のように入力して、私のAppIDとAppSecretと私はアクセストークンを取得押したときに私が取得現在のトークンを移入...FacebookのグラフAPIを使用して長期アクセストークンを取得できません

GET/OAuthの/ access_tokenは?
grant_type = fb_exchange_token &
CLIENT_ID = {APP-ID} & client_secret = {APP-秘密} & fb_exchange_token = {短命トークン}

私はリターンを得る

{"error": "無効な応答"}

Can so私が間違ってやっていることを詳しく説明したり、この長期的なトークンを取得する際に役立つ詳細な手順を説明したりします。

私はこのスレッドFacebook Page Access Tokens - Do these expire?で何が起こっているのかを次のようにしてみました。どんな助けでも大歓迎です。

ご協力いただきありがとうございます。 乾杯、

-ryan

+0

あなたは、長期 'ユーザアクセスtoken'または'ページアクセスtoken'をお探しですか? –

答えて

22

あなたがGraph API Explorerを使用してlong-lived user tokenを取得することはできません。あなたは、ブラウザで同じことを確認することができます

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} 

ツー\GETリクエストを行う必要があります。

があり、page access tokenが必要な場合はとなることはありません。トークンの有効期限はです。ここでは受け入れ答えをチェックアウト:What are the Steps to getting a Long Lasting Token For Posting To a Facebook Fan Page from a Server

+0

ありがとう!これは本当に私がやっていたこととはまったく違うわけではありませんでしたが、何らかの理由でリクエストをURLバーに直接入れても、私にとってはうまくいきました。 PAgeトークンは次のステップです。追加リンクをいただきありがとうございます! – StafHat

+0

ブラウザから呼び出すと応答が返ってくるが、PHPコードを使って呼び出すと、次のようなエラーが表示される: 'アクセストークンの検証エラー:セッションが17日(月)17日に期限切れになる04: 38:48 PDT。現在の時刻は土曜日、10月6日17時00分44秒35分PDTです。このための解決策です。古いトークンが期限切れになったので、新しいトークンを取得したいです。 –

+0

単純な[ログイン](https://developers.facebook.com/docs/facebook-login)の流れから '短命のユーザアクセストークン'を得ることができます。 –

1

FacebookのPHP SDKはすでに正常にログインした後短命トークンを使用して長寿命トークンを取得するためのメソッドを実装して

$result = $facebook->setExtendedAccessToken(); 
を呼び出す簡単な短命トークンを、持っている

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

9

私はこれを再訪し、私が書いたドキュメンテーションを提供して、誰かがこの事態を起こすのを助けてくれるだろうと思った!

です。アプリケーションを作成する

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

TWO

のApp ID:AAAAA(15〜およそ文字でなければなりません)

のAppシークレット:BBBBBアプリケーションを作成した後、我々は情報の二つの重要な部分を持っていなければならない情報

の必要なピースを取得(約32文字程度)

https://developers.facebook.com/tools/explorer 上部のドロップダウンボックスから正しいアプリケーションを選択していることを確認してください。

[アクセストークンを取得]をクリックし、「新鮮な」トークンを取得します。

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

CCCCC

THREE(長い〜200文字でなければなりません)。

https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id= {アプリ-ID} & client_secret =:ロングライフトークン(2月)

あなたはその後、長期(2ヶ月)を取得するクエリを実行するために必要な情報の断片を持つべきであるトークンを取得します。 {app-secret} & fb_exchange_token = {短命トークン}

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

次のような要求を取得する必要がありますインターネットブラウザのURLバーにこのクエリ

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

場所を。あなたは、次のようになりますウィンドウ内の応答を取得する必要があります:

access_tokenは= DDDDD &は= 5184000

DDDDD(〜200文字でなければなりません)

FOURを満了します。テストトークン(その1)

次のデバッグサイト上の入力にハイライト部を入力した場合:

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

それはあなたに約2ヶ月の期限を与える必要があります。

FIVE。期限切れでないページトークンを取得する

この新しいロングライブトークンに注目して、関連するアプリケーションがユーザーのアクセスから削除されたり削除されたりしない限り、これを使用して有効期限のないトークンを取得します。 要求を行ったときに私たちは、ページ名または好ましくはページ-idのいずれかを使用します。

あなたはhttp://findmyfacebookid.com/ のようなものを使用して、あなたのFacebookのページIDを取得することができます私たちは、EEEEE

https://graph.facebook.com/としてあなたのページのIDを参照してくださいよ

:あなたは、次のような要求を取得する必要があります

{ページ-ID} /フィールド= access_tokenは& access_tokenは= {ロングライブトークン}?

これは、次のようなものが返されます: { "access_tokenは": "FFFFF"、 "ID": "131062838468" }

はFFFFF(〜200文字でなければなりません)

。テストトークン(パート2)

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

セブン。ハイタッチ!

申し訳ありませんが、これを達成する方法の長いリストはありますが、ちょっとしたスニペットの代わりに全体のプロセスを提供する方が良いことがわかります。この情報が役立つと思われる場合、または手順のいずれかを達成するためのより良い方法がある場合はお知らせください。

+0

こんにちは@ライアン、これは動作しません。作成されたアプリケーションはFacebookに投稿を行いますが、ページ管理者だけがその投稿を見ることができます。 – YSY

0

クライアント側

 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

はWebService1.asmxという名前でWebサービスを作成し、次にこのファイルにサーバーサイドコードを配置する必要があります –

関連する問題