2010-03-07 2 views
2

Я потратил целую субботу, изнуряющую Google. Серьезная хорошая Карма принадлежит любому, кто может помочь.Создание сеанса Facebook Facebook Connect на основе действительного ключа офлайн-доступа (бесконечный ключ сеанса)

Я использую инструментарий V3 для .NET Facebook для аутентификации пользователей с Facebook. Когда пользователь предоставляет разрешение offline_access, я сохраняю ключ сеанса. Когда они вернутся позже без сеанса facebook (но с действительным сеансом для моего веб-приложения).

Я хватаю ключ из базы данных, и я применить его к Facebook.Session так:

facebookAPI.Session.SessionKey = offlineAccesSessionKey; 
    facebookAPI.Session.UserId = (long)fuid; 

Работает как магия.

Теперь вот проблема:

Как использовать этот бесконечный ключ сессии с помощью API Javascript и FBML?

Я могу передать ключ сеанса на клиентскую сторону, но что тогда? getAuth? set_session? Не могу заставить его работать, старайтесь, как я могу, и не уверен, что это поможет мне с FBML.

Я попытался это:

facebookAPI.Auth.Session.UserId = (long)fuid; 
    facebookAPI.Auth.Session.SessionKey = offlineAccesSessionKey; 
    facebookAPI.Auth.Session.SessionSecret = _facebookAPI.Session.SessionSecret; 
    facebookAPI.Auth.PromoteSession(); 

Надеясь, что он будет копировать печенье, и я мог забрать их на стороне клиента, но не повезло.

Похоже, что это должно быть довольно распространенная ситуация, но мои «экспертные» навыки Google поднимают ZERO.

Есть ли у кого-нибудь опыт, который может вам помочь?

+0

Есть ли бесконечный секрет сессии, который вы также можете сохранить? Я думал, что это двухсторонний ключ (даже бесконечные ключи) – Doug

ответ

0

Из того, что я знаю, API JS для Facebook генерирует свой сеанс на время его использования (исправьте меня, если я ошибаюсь). Этот сеанс является временным, поэтому он не будет работать с его маркером на сервере.

Что вы можете сделать, это сохранить uid в базе данных вместе с (бесконечным) токеном. Затем с помощью JS API вы можете получить uid от клиента, отправить на сервер, а затем извлечь токен из базы данных. Затем вы можете выполнить обычное подключение на стороне сервера от имени пользователя.

Надеюсь, это поможет.

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