2013-02-28 4 views
4

Я использую новую обертку OAuthWebSecurity для DotNetOpenAuth, чтобы разрешить пользователям входить в приложение MVC4 со своей учетной записью Microsoft (иначе Windows Live ID).Как лучше контролировать, как DotNetOpenAuth использует учетную запись Microsoft (Live ID)?

Я зарегистрировал майкрософт клиента:

OAuthWebSecurity.RegisterMicrosoftClient(clientId: "...", clientSecret: "..."); 

Это все работает, и я люблю простоту этого. Но как я уточню, что он делает?

После выбора войти в систему под своей учетной записью Microsoft, пользователь попадает на экран с просьбой войти в систему:

Step One

Когда они войти, я хочу, чтобы иметь возможность проверить «Держите меня подписанным». затем

Microsoft просит для них OK моего доступа:

Step Two

Но я на самом деле не хочет что много доступа. Все, что я хочу, это их имя и адрес электронной почты. И, может быть, их картина. Мне, конечно, не нужен или не нужен доступ к их контактам и друзьям. Это отпугнет моих пользователей.

Где я могу передать параметры OAuthWebSecurity или DotNetOpenAuth для управления этим?

Таким образом, пользователь нажимает да и все в порядке. Однако, когда они уходят и возвращаются на мой сайт - опция «держать меня в игре» должна быть выполнена. Это не так. Вместо этого, они видят в этом:

Step Three

Я не понимаю, что сообщение говорит:

Поскольку вы обращаетесь конфиденциальной информации, вам необходимо подтвердить свой пароль.

Какая конфиденциальная информация? Контакты или друзей, с которыми я не хотел начинать? Или что-то другое?

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

+0

Вы когда-нибудь работали? У меня возникла проблема с регистрацией в Azure в Powershell, и нет никаких действий, которые вы можете выполнить на странице –

+0

@DanCsharpster. У вас может быть один и тот же опыт пользовательского интерфейса, но в моем случае я контролировал взаимодействие приложения с поставщиком удостоверений (MS Account) напрямую, и при выборе правильной области исправлена ​​проблема (как в принятом ответе). –

ответ

4

Вам необходимо передать нужные вам области, вы можете просто использовать wl.signin, который будет подписывать пользователей в вашем приложении, если они уже вошли в систему, чтобы снова не запрашивать учетные данные.

Проверить http://msdn.microsoft.com/en-us/library/live/hh243646.aspx

+1

Спасибо за ссылку. На самом деле это выглядит так: «wl.basic» - это то, что я использую, и это соответствует поведению, которое я описал.Кажется, мне нужно удалить область wl.basic из запроса. Я переопределил «MicrosoftClient.GetServiceLoginUrl», чтобы удалить область из вызова на «oauth20_authorize.srf», но теперь она вообще не работает. –

+0

Вам нужен базовый доступ к учетной записи, это минимальный запрос Microsoft, на который я верю. –

+0

Похоже, я могу получить поведение, которое я ищу, передав 'wl.signin' вместо' wl.basic'. Вы видите какие-либо проблемы с этим? –