Петля перенаправления аутентификации Facebook - PullRequest
1 голос
/ 16 февраля 2012

Я пытаюсь добавить возможность поделиться продуктом, который вы только что купили, на мой сайт, используя Facebook C # SDK .Для этого вам необходимо аутентифицировать пользователя с помощью Facebook и получить необходимые разрешения.

У меня есть код, который проверяет, аутентифицированы ли вы, если нет, перенаправляет вас на страницу oAuth Facebook для аутентификации.

Однако, когда страница возвращается из Facebook, она входит в цикл перенаправления:

var auth = new FacebookWebAuthorizer();

bool authorized = auth.FacebookWebRequest.IsAuthorized(new string[] { "publish_stream" });

if (authorized)
{

    var client = new FacebookClient(auth.FacebookWebRequest.AccessToken);

    Dictionary<string, object> args = new Dictionary<string, object>();

    args["message"] = "This is a test.";
    args["name"] = "";
    args["link"] = "http://www.example.com/";
    args["description"] = "Test link.";

    client.Post("/me/feed", args);

}
else
{

    var facebookClient = new FacebookOAuthClient();

    var parameters = new Dictionary<string, object> {
        { "redirect_uri", "http://www.example.com/" },
        { "client_id", "xxxx" },
        { "scope", "publish_stream" }
    };

    Response.Redirect(facebookClient.GetLoginUrl(parameters).ToString(), true);

}

Мой web.config выглядит так:

<configuration>

    <configSections>
        <section name="facebookSettings" type="Facebook.FacebookConfigurationSection" />
    </configSections>

    <system.web>

        <customErrors mode="Off" />

        <compilation debug="true" targetFramework="4.0" />

    </system.web>

    <system.webServer>

        <modules runAllManagedModulesForAllRequests="true" />

        <handlers>
            <add name="facebookredirect.axd" verb="*" path="facebookredirect.axd" type="Facebook.Web.FacebookAppRedirectHttpHandler, Facebook.Web" />
        </handlers>

    </system.webServer>

    <facebookSettings appId="xxxx" appSecret="xxxx" />

</configuration>

Это выглядиткак будто мой сайт не распознает, что я уже аутентифицирован, поэтому он перенаправляет на страницу входа в Facebook.Затем Facebook знает, что я аутентифицирован, поэтому перенаправляет меня обратно, вызывая зацикливание.

Ответы [ 2 ]

2 голосов
/ 17 февраля 2012

Подобные циклы обычно вызваны тем, что браузер не любит принимать куки-файлы третьих сторон. Попробуйте установить заголовок P3P в ответе вашего веб-сервера. См .: http://www.hanselman.com/blog/TheImportanceOfP3PAndACompactPrivacyPolicy.aspx для получения дополнительной информации. Удачного кодирования!

0 голосов
/ 15 июня 2012

Я разработал пример кода, доступного по адресу http://aka.ms/need01, который вообще не использует файлы cookie.По сути, он использует собственный модуль аутентификации, который я написал (с состоянием сеанса, хранящимся в таблицах Windows Azure, но вы можете написать тот, который использует другое хранилище) и сохраняет оставшееся его состояние в URL.Надеюсь, это поможет

...