У меня возникли проблемы с тем, чтобы мое приложение C # Facebook для холста определяло, авторизовал ли пользователь мое приложение.
Проблема на самом деле возникает только на дополнительной странице.Мое приложение первоначально проверяет на целевой странице и правильно определяет, что пользователь подтвердил приложение.
Краткий обзор приложения:
- Пользователь любит приложение.
- Пользователь авторизует приложение.
- Пользователь отправляет информацию другу (через уведомление Facebook)
- Друг пользователя заходит в приложение и получает информацию.
Итак, шаги 1-3 работают.На шаге 4 у меня возникают некоторые проблемы.
Я вызываю метод с именем "HasAuthorizedApplication", чтобы убедиться, что пользователь авторизовал приложение перед попыткой получить данные из API.
public bool HasAuthorizedApplication()
{
bool returnValue = false;
try
{
if (FacebookWebContext.Current != null)
{
returnValue = FacebookWebContext.Current.IsAuthorized(Scope.Split(','));
if (returnValue)
{
AccessToken = FacebookWebContext.Current.AccessToken;
HttpContext.Current.Session["accesstoken"] = AccessToken;
}
else
{
HttpContext.Current.Session["accesstoken"] = null;
}
}
}
catch
{
returnValue = false;
}
return returnValue;
}
«Область» - это просто разрешения, которые я запрашиваю: «publish_stream, email»
Итак, на шаге 4 «друг пользователя» нажимает на уведомление Facebook и попадает на целевую страницу.приложения.Он проверяет авторизацию, и если друг не авторизовался, отображается диалог авторизации.
После авторизации приложение перенаправляет на дополнительную страницу, и перед тем, как я получу детали уведомления из графика, я проверяю еще раз, чтобы убедиться, что друг все еще авторизовал приложение.
К сожалению,когда я называю это на этот раз, «FacebookWebContext.Current.IsAuthorized» всегда возвращает «ложь».Я отмечаю, что «AccessToken» и «SignedRequest» в настоящее время не имеют значения.Я пытаюсь перенаправить обратно в диалог авторизации, но, поскольку друг уже подтвердил, он не отображается для пользователя.Но каждый раз, когда они возвращаются на мою дополнительную страницу, вызов IsAuthorized возвращает false.(и если я пытаюсь просто получить данные, дополнительно возвращает false)
Мой вызов для получения данных, связанных с уведомлением Facebook:
public dynamic GetData(string dataId)
{
if (HasAuthorizedApplication())
{
var fb = new FacebookWebClient(AccessToken);
dynamic data = fb.Get(dataId);
return data;
}
return null;
}
Где «dataId» - это идентификаторУведомление.
По общему признанию, я не знаю много о том, как работает взаимодействие между Javascript и backend.У меня дополнительно есть следующий Javascript как на целевой, так и на вспомогательной страницах:
<script type="text/javascript">
FB.init({
appId: '<%=APPID %>',
status: true, // check login status
cookie: true, // enable cookies to allow the server to access the session
oauth: true,
xfbml: true // parse XFBML
});
</script>
И идеи, почему он будет работать правильно на одной странице, а не на другой?
Спасибо!Craig