Facebook C # SDK, AJAX в приложении iFrame - PullRequest
1 голос
/ 15 ноября 2010

Я делаю приложение iFrame для Facebook, используя Facebook C # SDK.У меня есть то, что пользователь аутентифицируется, и я могу получить его имя пользователя с помощью Graph API (FaceBookApp.Api ("/ userid"))

Моя проблема сейчас заключается в том, что когда я выполняю AJAX-вызов страницыбольше не может использовать API.ИД пользователя равен 0. При открытии FireBug ответом на запрос является «Неподдерживаемый запрос на получение».Я подозреваю, что это как-то связано с тем, что запрос AJAX использует другой сеанс для вызова, и этот сеанс не аутентифицирован.Мне было интересно, есть ли способ обойти это?Я знал, что могу сделать страницу, которую я запрашиваю, повторной аутентификацией, но это будет означать, что мне придется повторять запрос для каждого запроса, который не кажется эффективным.Я использую Jquery для выполнения запроса.

Любая помощь очень ценится.

Спасибо

1 Ответ

2 голосов
/ 15 ноября 2010

Проблема в том, что при вызове ajax в iframe вы должны отправить информацию о сеансе для клиента на сервер.В противном случае FacebookApp не сможет узнать, кто является текущим пользователем.Вы можете решить это одним из двух способов.

  1. Вы можете отправить все значение signature_request на сервер.
  2. Вы можете использовать Javascript SDK для получения токена доступа пользователей и отправки только этого значения на сервер.

Я думаю, что первый путь самый лучший.Все, что вам нужно сделать, это изменить свой URL-адрес ajax, включив в него подписанный запрос, например:

var ajaxUrl = '/services/example?signed_request=<%=Request.Querystring["signed_request "]%> ';

Тогда просто сделайте ваш звонок как обычно с новым URL.После этого класс FacebookApp будет читать сессию из запроса ajax, и вам будет хорошо идти.

...