2

私はfacebookアプリケーションに取り組んでいます。アプリ ユーザーからオフライン アクセス許可を取得しています。ユーザーが初めてアプリを使用したときに生成された同じトークンを使用できるようになり、このトークンをデータベースに保存し、ユーザーがサイトに再度ログインして、アプリを介してウォール投稿を公開したいときはいつでも使用できるようにしたいと考えています。ウォールでの公開には同じトークンを使用します。

これが私のコードです

protected void Page_Load(object sender, EventArgs e)
{
    var auth = new CanvasAuthorizer { Permissions = new[] { "user_about_me", "publish_stream", "video_upload", "share_item", "photo_upload", "offline_access" } };

    var fbWebContext = FacebookWebContext.Current;
    if (fbWebContext.IsAuthorized())
    {
        try
        {
            var fb = new FacebookWebClient(fbWebContext);
            var token = fb.AccessToken;  \\ Im Getting Token This Way When its Generated From User After Getting Extended Permission
            dynamic result = fb.Get("/me");
            long id = fbWebContext.UserId;
        }
        catch (Exception ex)
        {
            if ("(OAuthException) Error validating access token: The session is invalid because the user logged out or because auth.expireSession was invoked." == ex.Message)
            {
                fbWebContext.DeleteAuthCookie();
                Session.Clear();
            }
        }
    }
}

を使用してアクセストークンを取得しますvar token = fb.AccessTokenが、使用すると次のように表示されます

トークンは Unix Time xxxxxxxxxx で期限切れです。

これがオフライン アクセスの拡張アクセス許可を要求した後のアクセス トークンであるかどうかを教えてください。誰でも助けてもらえますか?

4

1 に答える 1

0

ここでの主な問題は、offline_access パーミッションを要求しても、トークンが期限切れにならないと 100% 確信できないことです。

ユーザーがパスワードを変更したり、アプリのシークレットを変更したりするなど、offline_access の場合でも、アクセス トークンの有効期限が切れる可能性がある多くのケースがあります。これらのケースやその他のケースでは、アプリは無効化されたアクセス トークンを検出してパスできる必要があります。ユーザーは認証フローを介して新しいトークンを取得します。

アクセス トークンとアクセス トークン lint ツールを使用して、アクセス トークンをテストし、デバッグすることができます: https://developers.facebook.com/tools/access_tokenおよびhttps://developers.facebook.com/tools/access_token /リント

有効なトークンを正常に取得したことを再確認するには、API 経由で取得したトークンをコピーしてグラフ エクスプローラー ツールに貼り付けます。https://developers.facebook.com/tools/explorer/?method=GET&path=me

于 2011-08-16T11:54:37.987 に答える