Я снова застрял! Я пытаюсь внедрить безопасный сервис WebApi с идентификатором ASP.NET с использованием индивидуальной учетной записи. Услуга WebApi будет потребляться мобильным приложением, разработанным с помощью телефонного разговора. В моем приложении phonegap для входа в систему используются facebook и twitter, и я отлично реализовал это на клиенте.
Я создал проект SPA из шаблона визуальной студии, и я протестировал процесс входа в систему, отслеживая HTTP-запросы с помощью инструментов fiddler и chrome dev. Я пробовал следующие запросы, используя postman
GET: http://localhost:49577/api/Account/ExternalLogins?returnUrl=/&generateState=true
ОТВЕТ:
[{
"Name": "Facebook",
"Url": "/api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A49577%2F&state=jpePf27F3ufkCCEldFdoOVMEGBGTEO1CrRdUQ3bHEP01",
"State": "jpePf27F3ufkCCEldFdoOVHSGBGTEO1CrRdUQ3bHEP01"
}]
а затем я вызываю
GET: http://localhost:49577/api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A49577%2F&state=jpePf27F3ufkCCEldFdoOVMEGBGTEO1CrRdUQ3bHEP01
который вызывает метод GetExternalLogin AccountsController. Затем он возвращает экземпляр ChallengeResult, когда пользователь не аутентифицирован.
Вот где я застрял. Q1: ChallengeResult заставляет 301 переадресовать на страницу входа в facebook с некоторыми параметрами querystring. Я не хочу этого, я хочу, чтобы он дал мне параметры, но позвольте мне обработать ведение журнала в моем запросе ajax. Я пробовал комментировать эту строку кода
Request.GetOwinContext().Authentication.Challenge(LoginProvider);
но я получаю 401 с чем-то еще, как я могу контролировать, что ответ от ChallegeResult?
Q2. Кроме того, я не могу понять, что дальше отсюда, после того, как я получу токен доступа из facebook, какую конечную точку webapi я должен вызвать, если я уже получил токен доступа, что мне следует передать ему?
У меня есть googled весь день, но я не могу найти ничего, что отвечает на мой вопрос. Любая помощь будет оценена по достоинству. Благодаря
UPDATE:
Относительно Q2; Я понял следующий шаг, и это
GET: http://localhost:49164/signin-facebook?code=...&state=...
Это возвращает еще 302, который перенаправляется на
http://localhost:49164/api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A49164%2F&state=7oGPd37EA-nmtXPtYEQ40qnretDeKjbPEM1gNkb2DuM1
который, в свою очередь, возвращает еще 302, который затем перенаправляется на
http://localhost:49164/#access_token=...
Итак, как мне обрабатывать все переадресации с мобильного клиента без браузера?
UPDATE
Я пытаюсь найти действие контроллера, которое обрабатывает
http://localhost:49164/signin-facebook?code=...&state=...
Может ли кто-нибудь помочь?
UPDATE С тех пор я опубликовал этот вопрос, много узнав о потоке входа в facebool, который, возможно, я должен был сделать раньше! У меня все еще есть один вопрос, но я создал другой вопрос для этого здесь, чтобы сохранить беспорядок