2

Facebook Graph API について少し混乱しています。

まず、開発者ページでアプリを作成し、次のような URL でアプリを自動化しました。

www.facebook.com/dialog/oauth?client_id=MY_CLIENT_ID&redirect_uri=http://www.facebook.com/connect/login_success.html&type=user_agent

わかりました...この後、ページは次のような URL を返しました。

www.facebook.com/connect/login_success.html#access_token=ACCESS_TOKEN&expires_in=5171411&code=CODE

返される ACCESS_TOKEN は常に同じであることに気付きました。だから私は次のようにユーザーを検索していました:

graph.facebook.com/search?q=QUERY_SEARCH&type=user&access_token=ACCESS_TOKEN

上記の URL はすべて正しいと思います。

私の疑問は次のとおりです。長寿命トークンの使用方法がわかりません(実際、返されたトークンが長寿命かどうかさえわかりません)。これらの URL を使用すると、常に同じトークンが返されるため、常に同じ ACCESS_TOKEN を使用します。

しかし、私が Facebook グラフ ページで読んだように、トークンはもう永久にアクティブにすることはできません... それらは期限切れになります。

ロング ライブ トークンを持っているかどうかはどうすればわかりますか? トークンの有効期限が切れた場合、どのように「更新」できますか?

ドキュメントに従おうとしましたが、完全に迷ってしまいました...

developers.facebook.com/roadmap/offline-access-removal/

このページには、詳細設定メニューに「deprecate offline_acess」が存在すると書かれていますが、そうではありません!

だから...トークンの有効期限が切れたときにトークンを管理する方法や、長期間有効なトークンを使用しているかどうかを知る方法がわかりません

4

2 に答える 2

2

アクセス トークンは 1 か月ほど有効で、機能しなくなったら新しいトークンをリクエストする必要があるというのが一般的な考え方だと思います。

新しいものを取得するには、次のような方法があります。

public static class GraphApiRequestProcessor
{
    public static string GetNewAccessToken( CancellationToken cancellationToken )
    {
        const string tokenUrlPattern = @"https://graph.facebook.com/oauth/access_token?client_id={0}&client_secret={1}&grant_type=client_credentials";
        string tokenUrl = string.Format( tokenUrlPattern, Settings.FacebookAppId, Settings.FacebookAppSecret );

        using( var client = new WebClient() )
        {
            // allows cancellation while executing request
            using( cancellationToken.Register( client.CancelAsync ) )
            {
                using( var data = client.OpenRead( tokenUrl ) )
                {
                    using( var reader = new StreamReader( data ) )
                    {
                        string response = reader.ReadToEnd();
                        int index = response.IndexOf( "=", StringComparison.InvariantCultureIgnoreCase );
                        string code = response.Substring( index + 1 );
                        return code;                
                    }                   
                }
            }
        }
    }
}
于 2012-12-19T18:51:58.920 に答える
1

Access Token Debuggerでアクセス トークンの有効期限を確認できます。

有効期間の短いアクセス トークンを入力する必要があるこの API を使用して、有効期間の長いアクセス トークンを取得できます。

https://graph.facebook.com/oauth/access_token?             
    client_id=APP_ID&
    client_secret=APP_SECRET&
    grant_type=fb_exchange_token&
    fb_exchange_token=EXISTING_ACCESS_TOKEN 

これにより、新しい長期アクセス トークンが返されます。(賞味期限は2ヶ月あります。)

于 2012-12-19T22:29:58.067 に答える