Как прозрачно обновить токен доступа Facebook при обработке метода службы, использующего вызовы API Facebook?

У меня есть служба WCF, которая работает в IIS 7.5 и VS 2010. Эта служба имеет некоторые методы, которые внутренне используют Facebook C #SDK(версии 4.1, не последней. )для выполнения некоторых операций GET и POST из/в Facebook. Поскольку Facebook скоро удалит offline_access, я должен справиться с ситуацией, когда срок действия токена доступа истек.

Я понял, как выполняется аутентификация (для получения кода и после получения кода для получения токена доступа )для использования Graph API для получения информации Facebook (в представленном виде здесь).

У меня есть два вопроса.:

  • Когда вызывается мой сервисный метод и я получаю токен соответствующий пользователь из моей БД, есть ли способ узнать, является ли токен доступа просрочен или нет?
    Я читал , что при выполнении вызова API Facebook и истечении срока действия маркера доступа возникает следующее исключение:OAuthException. Но есть ли лучший способ обнаружить истечение? Я не хочу
    1. Вызывать API Facebook
    2. Обрабатывать исключение
    3. Обновлять токен доступа и, наконец,
    4. Повторять первоначальный вызов с новым токеном доступа.
  • Можно ли прозрачно обновить токен доступа пользователя (, сохранить его также в БД )и продолжить обработку метода службы? В этом ресурсе отсутствует важная (часть «Обновление токена доступа» ), (объявленная как [todo])

Я хотел бы добиться следующей схемы,в реализации метода службы:

sc = SocialNetworkAccountDao.GetByUser(user)

isExpired = call method to check if the sc.token is expired.

if (isExpired)

{

  newToken = call method for getting new access token

  sc.token = newToken;

  SocialNetworkAccount.Update(sc);

}

Facebook = new Facebook (sc.token)

Facebook.Post(..... )

--

Процесс связи с диалоговым окном QAuthявляется асинхронным (выполняется перенаправление ), и связь с URL-адресом токена доступа для получения токена доступа выполняется синхронно.

Последний вопрос:

  • Есть ли способ, с помощью которого метод службы может ожидать новый токен доступа, который мы получить из запроса/обратного вызова с Facebook, чтобы продолжить позже с новым токеном доступа?

14
задан pantelif 2 May 2012 в 14:03
поделиться