1

Это может показаться очевидной проблемой, но я просмотрел сайт разработчиков facebook относительно приложений на холсте и на facebook csharp sdk и не нашел ответа на мои вопросы.Структура сайта для нескольких страниц Facebook Canvas app

Я использую facebook-C# -sdk v5.4x или что-то о, .net 3.5, используя веб-формы.

Приложение для холста на рабочем столе будет иметь несколько точек входа.

https://apps.facebook.com/my_canvas_app/Default.aspx
https://apps.facebook.com/my_canvas_app/Register.aspx?EventID=12345
https://apps.facebook.com/my_canvas_app/SomeOtherPage.aspx

Мой первый вопрос заключается в том, что с первого запроса от Facebook, я получаю signed_request (который facebook-C# -sdk берет на себя), у меня есть маркер OAuth , который действителен в течение приблизительно 2 часов. Каков правильный способ повторного ввода этого токена oauth и убедиться, что он действителен, прежде чем пытаться сделать запрос oauth (запросить график и т. Д.)?

Прямо сейчас все мои ссылки (скажем, от Default.aspx) выглядят как <a href="https://apps.facebook.com/my_canvas_app/SomeOtherPage.aspx" target="_top">Go to Some Other Page</a>, что заканчивается тем, что совершает кругосветное путешествие на facebook, получая новый signed_request и, таким образом, обновленный токен oauth.

Во-вторых, при выполнении обычной формы обратной передачи, хотя asp.net на моем собственном сайте, я гарантирую, что signed_request находится на форме с простым <input type="hidden" name="signed_request" value="<%=Request.Form["signed_request"]%>" />, который, кажется, отлично подходит для приложения. Если я опустил это, то postback не имеет информации oauth, что приводит к сбоям в работе. Это правильный способ выполнения обратной передачи в приложении холста? Из того, что я вижу из просмотра источника csharp-sdk, ничего не хранится в сеансе, чтобы сохранить токен oauth между запросами, поэтому ссылки для скрытого ввода и target = "_ top" требуются для нескольких страниц/postbacks, am Я исправляю этот вывод?

В-третьих, при разработке мобильного холста (без iframe), все ссылки на моей странице по-прежнему должны идти до https://apps.facebook.com/my_canvas_app/MobilePage.aspx, если мое первое предположение верно.

Если бы кто-нибудь мог пролить свет на эти предметы, я был бы очень благодарен.

Спасибо!

ответ

0

То, что я делаю, используя signed_request на основе каждой страницы.Все ссылки в среде рабочего стола переходят к http://apps.facebook.com/myappnamespace/MyPageName.aspx с target="_top", таким образом, каждое изменение страницы получает обновленный токен oauth. Mobile работает по-разному, поскольку signed_request недоступен для мобильных устройств. Решением для этого является использование аутентификации на стороне сервера. Я не использую http://apps.facebook.com/myappnamespace для мобильной среды, так как он не находится в пределах iframe. Mobile работает как любой другой регулярный веб-сайт.

2

Сейчас все мои ссылки (скажем, от Default.aspx) выглядеть Перейти на другую страницу, которая заканчивает тем, что делает путешествие туда и обратно на Facebook, получить новую signed_request, и, таким образом, обновленный маркер OAuth.

Я бы предложил также внедрить SDK JavaScript на ваши страницы - вызов FB.getLoginStatus также должен получить вам действительный токен доступа каждый раз. Другая вещь, которую вы могли бы сделать, это обмен, что доступ короткого времени жетона вы получаете в входе пользователя в течение длительного времени одного см https://developers.facebook.com/roadmap/offline-access-removal/

Если вы не сохранить маркер доступа в какой-то сессии , то я думаю, вам придется перевести его со страницы на страницу через postback, да.

(А может быть, вы должны смотреть на https://developers.facebook.com/docs/authentication/access-token-expiration/ а.)

+0

Я ищу, чтобы сделать все oauth без javascript, если это все возможно. Если требуется javascript, то почему вообще существует 'signed_request'? Я понял, что 'signed_request' является альтернативой использованию javascript lib. – Matthew

+0

Если вы выполняете аутентификацию на стороне сервера, то токен доступа должен быть действительным в течение 60 дней, а не только двух часов (см. Https://developers.facebook.com/roadmap/offline-access-removal/) – CBroe

 Смежные вопросы

  • Нет связанных вопросов^_^