2011-01-04 2 views
0

Вы знаете, как пользователи могут очистить предварительно заполненную форму и вернуться к нормальной регистрации?Очистить все поля профиля Facebook и вручную заполнить регистрационную форму?

Я разрабатываю приложение регистрации iframe, и когда пользователь очищает поля формы, похоже, что signed_request все еще действителен (если при загрузке пользователь был зарегистрирован в facebook).

Кто-нибудь знает, как мы должны знать, действительно ли пользователь использует информацию FB или информацию о регистрации? Ранее я думал, что сессия сообщит нам, но мой сеанс все еще действует после того, как пользователь набрал «ясную форму».

// Check to make sure we have a signed_request object, if not, redirect to home 
var sreq = Request.Form["signed_request"]; 
if (string.IsNullOrEmpty(sreq)) 
{ 
Response.Redirect(WebConstants.SiteConstants.Home); 
} 

var app = new FacebookApp(); 

WHy is app.UserId все еще заполняется, если пользователь очищает ФОРМУ!

Как определить, что мы действительно хотим интегрироваться с FB или нет?

спасибо!

ответ

0

Регистрация и аутентификация - это две совершенно разные вещи. Просто потому, что пользователь «очищает» форму не выводит их из фейсбука. C# SDK просто обнаруживает, существует ли signed_request и действителен.

1

Я согласен с аутентификацией и регистрацией, но я думаю, что API Facebook не очищает cookie подлинности правильно, потому что он по-прежнему действителен, если вы очистите форму или выход из системы (я использую регистрацию iFrame), поэтому я думаю, m ищет наилучшую практику, так как, когда я получаю подписанный запрос, идентификатор является аутентифицированным пользователем, поэтому единственная работа, которую я имею сейчас, - проверить для String.IsEmptyOrNull (в поле пароля) - это говорит мне, что это пользователь не использовал facebook регистрация). Я думаю, что это взломать, но если кто-то знает «правильный» способ принять подписанный запрос и преобразовать его в объект, прокомментируйте мой подход. Довольно удивительно, что нам еще нужно написать тонну кода, для чего должен быть прямой подход к получению того, что нам нужно. Я видел множество жалоб на развитие FB, и они в основном верны - API Google не является этим разочаровывающим, и FB практически не тестирует другую среду (не говоря уже о известных проблемах с файлами cookie с localhost).

Проблема: App.UserId по-прежнему является аутентифицированным пользователем после очистки формы iframe или выхода из FB - go figure.

Решения: проверить presense поля пароля - это говорит о том, что у нас есть регистрация без фба происходит ....

C# .NET для все меньшинства там.

// Check to make sure we have a signed_request object, if not, redirect to home var sreq = Request.Form["signed_request"]; if (string.IsNullOrEmpty(sreq)) { Response.Redirect(WebConstants.SiteConstants.Home); } 

    JObject meObject = null; 
    var app = new FacebookApp(); 
    if (app.SignedRequest != null) 
    { 
     meObject = JObject.Parse(app.SignedRequest.Dictionary["registration"].ToString()); 
     // Access meObject    
     JavaScriptSerializer ser = new JavaScriptSerializer(); 
     fbReg = ser.Deserialize<FBRegistration>(meObject.ToString()); 
     if (fbReg != null) 
     { 
      // 02 Feb 2011 - MCS - bug in facebook API, does not delete cookie if logout of FB 
      // We check to see if we have password - then - we know we can check the UserId 
      if (String.IsNullOrEmpty(fbReg.password)) 
      { 
       // FB Registration 
       FacebookUserId = app.UserId; 
      } 
      else 
      { 
       FacebookUserId = 0; 
       // Non FB Registration 
Смежные вопросы