В настоящее время я использую Facebook C # SDK v4.2.1 и пытаюсь что-то опубликовать на стене пользователя. Это работало нормально, пока я не получил ошибку FacebookOAuthException
(OAuthException) Error validating access token.
, и я не могу поймать это исключение, и это приводит к сбою моего приложения.
Я использую этот вызов FacebookApp.ApiAsync("/me/feed", ...)
. Поскольку это происходит асинхронно, я не уверен, куда мне поместить блок try-catch, чтобы перехватить эту ошибку, но безуспешно
Вот что я использую:
private void shareFBButton_Click(object sender, System.Windows.RoutedEventArgs e)
{
// ... code for preparing strings to post ...
try
{
// setup FacebookApp and params ...
app.ApiAsync("/me/feed", args, HttpMethod.Post, (o) => {
if (o.Error != null)
{
Debug.WriteLine("ERROR sharing on Facebook: " + o.Error.Message);
}
else
{
Debug.WriteLine("FB post success!");
}
}, null);
}
catch (Exception ex)
{
Debug.WriteLine("ERROR sharing on Facebook: " + ex.Message);
}
}
Так может кто-нибудь сказать мне, где я должен поставить свой блок try-catch, чтобы я мог поймать OAuthException
?
EDIT:
После дальнейшего изучения FacebookOAuthExcpetion выдается из Facebook C # SDK после того, как SDK перехватывает WebException и FacebookApiException. Для получения дополнительной информации посмотрите на "Павел Сурменок" его ответ. Именно это и происходит.
На данный момент единственным решением для перехвата FacebookApiException (базовый класс всех исключений Facebook SDK) является его перехват в методе App.UnhandledException. Проверьте тип e.ExceptionObject и, если это FacebookApiException, установите e.Handled в true, и приложение больше не будет выходить из себя.