Очистить все поля профиля Facebook и вручную заполнить регистрационную форму? - PullRequest
0 голосов
/ 05 января 2011

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

Я занимаюсь разработкой приложения для регистрации в iframe, и когда пользователь очищает поля формы, создается впечатление, что подписанный запрос все еще действителен (если при загрузке пользователь вошел в 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();

ПОЧЕМУ app.serId по-прежнему заполняется, если пользователь очищает ФОРМУ!

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

спасибо!

Ответы [ 2 ]

1 голос
/ 04 февраля 2011

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

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

Решение: проверьте наличие поля пароля - это говорит нам о том, что у нас нет-fb регистрация продолжается ....

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
0 голосов
/ 06 января 2011

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

...