Live Connect Rest API: вход пользователя? - PullRequest
5 голосов
/ 14 декабря 2011

Я работаю над документом, используя Live Connect Rest API.

(Документация здесь: http://msdn.microsoft.com/en-us/windowslive/default)

Используя пример по ссылке ниже, я могу войти в систему пользователя и запросить согласие на определенные действия.

Однако у меня есть несколько вопросов, связанных с этим:

  • Как я могу пропустить запрос согласия, если пользователь уже дал согласие раньше?
  • Что представляет собой способ сохранения «access_token» между запусками приложения?
  • Как я могу использовать единый вход при помощи Rest API?

Вход в систему: http://msdn.microsoft.com/en-us/windowslive/hh278363#rest

Спасибо!

Ответы [ 2 ]

1 голос
/ 24 июня 2014
  • Если пользователь ранее предоставил вам необходимое согласие, Live не предложит пользователю снова предоставить разрешение. Вам не нужно пропускать вручную.
  • Я не знаю, какая у вас платформа, но вы можете найти какой-то способ сделать хранилище вашего приложения изолированным или зашифрованным. Важно то, что токен имеет время истечения. Вы также можете рассмотреть возможность использования контроллера, предоставляемого Microsoft, который может обрабатывать все, что связано с Live-входом в систему. Вот мой пример WP8:

Добавьте это в файл XAML:

 <Controls:SignInButton Grid.Row="0" ClientId="yourid" Scopes="wl.offline_access wl.skydrive_update" HorizontalAlignment="Right" VerticalAlignment="Bottom" SessionChanged="OnSessionChanged" 
                                Margin="0,0,0,0" Width="160" Height="70" Background="Transparent" BorderBrush="{StaticResource TransparentBrush}" />

Перед этим добавьте эту строку в тот же файл:

xmlns:Controls="clr-namespace:Microsoft.Live.Controls;assembly=Microsoft.Live.Controls"

И элемент управления будет выглядеть так: enter image description here

Он будет автоматически обновляться при входе или выходе пользователя.

В своем коде C # добавьте к нему обработчик события OnSessionChanged:

 private void OnSessionChanged(object sender, LiveConnectSessionChangedEventArgs e)
    {
        //sign in
        if (e.Error != null)
        {
            MessageBox.Show(e.Error.Message);
            return;
        }

        if (e.Status == LiveConnectSessionStatus.Connected)
        {
            ((App) Application.Current).Session = e.Session;
            connectClient = new LiveConnectClient(((App) Application.Current).Session);
                       }
        }
    }
0 голосов
/ 09 апреля 2013

Вы смотрели здесь: http://msdn.microsoft.com/en-us/library/live/hh243646.aspx#wlsignin? Он будет обрабатывать пропуск запроса на согласие и единый вход (т. Е. Если пользователь вошел в Live, то он перенаправляется на страницу авторизации, аутентификация выполняется автоматически без каких-либо дополнительных действий).

...