Facebook автономный доступ .NET SDK - PullRequest
2 голосов
/ 06 мая 2011

Я работаю над приложением 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.

Может кто-нибудь подсказать мне, если это токен доступа после запроса расширенного разрешения автономного доступа, то почему он говорит:Токен доступа истек? ".Может кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 16 августа 2011

Основная проблема здесь заключается в том, что даже если вы запрашиваете разрешение offline_access, вы не можете быть на 100% уверены, что токен никогда не истечет.

В ряде случаев срок действия токена доступа может истечь - даже в случае offline_access - таких сценариев, как: изменение пользователем пароля, изменение секрета приложения и т. Д. В этих и других случаях ваше приложение должно иметь возможность обнаруживать недействительный доступ токен и передать пользователю через поток аутентификации, чтобы получить новый, свежий токен.

Вы можете проверить свои токены доступа и получить отладку на них с помощью инструментов токена доступа и доступа к токену: https://developers.facebook.com/tools/access_token и https://developers.facebook.com/tools/access_token/lint

Чтобы дважды проверить, успешно ли вы получили действительный токен, скопируйте и вставьте тот, который вы получили через API, в инструмент проводника графика. https://developers.facebook.com/tools/explorer/?method=GET&path=me

...