Аутентификация с Facebook с сайта местной разработки - PullRequest
3 голосов
/ 14 февраля 2012

Я пытаюсь добавить возможность публикации на стене пользователя с сайта, который я разрабатываю.

У меня есть некоторый код, использующий Microsoft C # Facebook SDK.Он проверяет, аутентифицирован ли текущий пользователь, если нет, перенаправляет на страницу OAuth.Если пользователь прошел проверку подлинности, он пытается опубликовать на своей стене:

CanvasAuthorizer auth = new CanvasAuthorizer();

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

if (authorized)
{

    FacebookClient client = new FacebookClient();

    client.AccessToken = auth.FacebookWebRequest.AccessToken;

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

    args["message"] = "This is a test.";
    args["name"] = "";
    args["link"] = "http://subdomain.domain.lom/";
    args["description"] = "Development site.";

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

}
else
{

    long appId = {APP_ID};
    string returnUrl = "http://subdomain.domain.com/share";

    Response.Redirect("https://www.facebook.com/dialog/oauth?client_id=" + appId.ToString() + "&redirect_uri=" + returnUrl + "&scope=publish_stream");

}

При первой загрузке он обнаруживает, что вы не прошли проверку подлинности, и перенаправляет вас на страницу авторизации Facebook.

Однако, когда он пытается вернуться на мой сайт, он входит в цикл перенаправления.

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

В данный момент я занимаюсь разработкой на моей локальной машине, http://subdomain.domain.lom/,который недоступен из внешнего мира.

Мои настройки приложения Facebook:

У меня сложилось впечатление, что не имеет значения, работаете ли вы локально?

Ответы [ 2 ]

1 голос
/ 14 февраля 2012

Режим песочницы

Я бы предложил создать второе приложение Facebook (с точки зрения идентификатора приложения Facebook) для разработки и тестирования с включенным режимом песочницы.

С помощью приложения для тестирования вы можете использовать один и тот же код с различными настройками для ограниченного числа пользователей, скрытых от кого-либо еще (очень полезно).

Вот несколько ссылок:

  1. Безопасность приложений из документов Facebook.
  2. Как вы ограничиваете приложение Facebook небольшим количеством людей во время тестирования? от stackoverflow.com.

Возможные ошибки

Попробуйте закодировать returnUrl значение.

Если это не сработает, вам нужно отладить его :(. Мой первый гость - Facebook авторизовал вас для другого домена.

0 голосов
/ 14 февраля 2012

Еще одна вещь, на которую стоит обратить внимание, это то, что IE будет работать без этого бесконечного цикла перенаправления, ему нужно увидеть политику p3p с вашего веб-сервера.

Проверьте в вашем web.config заголовок p3p. Если его там нет, вы можете добавить один, чтобы сделать IE счастливым.

См. http://www.hanselman.com/blog/TheImportanceOfP3PAndACompactPrivacyPolicy.aspx

...