Получение OAuth-маркера доступа для API Google Plus - PullRequest
1 голос
/ 26 января 2012

Я сейчас занимаюсь разработкой приложения для Google Plus. Я хочу получить токен доступа из Google Plus API. Я хочу использовать OAuth 2.0 для получения токена доступа. Я построил на URL

"https://accounts.google.com/o/oauth2/auth?client_id=752264386186- 72f3ef2ok1j3k8g12h7hg8k5kjt9s9si.apps.googleusercontent.com & сфера = HTTPS: //www.googleapis.com/auth/plus.me&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code"

, который, когда я вставил в браузер, просит войти в систему с моей учетной записью Google. Поэтому, когда я ввожу свои учетные данные, он запрашивает «разрешить доступ» или «нет, спасибо». когда я нажимаю «разрешить доступ», в браузере отображается токен доступа. Я хочу, чтобы описанные выше шаги были выполнены с использованием моего кода C #.

Как я могу перейти на страницу авторизации из кода и получить токен доступа, когда аутентификация прошла успешно. Должен ли я использовать httpwebrequest или веб-клиент или острый острый. Пожалуйста, предоставьте мне пример кода.

Ответы [ 2 ]

1 голос
/ 27 января 2012

Если вам удобно использовать WebBrowser, вот простой пример того, как я делал то же самое с API Foursquare. Этот код был написан только для проверки его работы, поэтому я уверен, что в нем отсутствуют некоторые важные вещи, такие как обработка ошибок и т. Д.

 private void button1_Click(object sender, RoutedEventArgs e)
    {
        string address =
            "https://foursquare.com/oauth2/authenticate" +
            "?client_id=" + CLIENT_ID +
            "&response_type=token" +
            "&redirect_uri=" + CALLBACK_URI;
        webBrowser1.Navigated += new EventHandler<System.Windows.Navigation.NavigationEventArgs>(webBrowser1_Navigated);
        webBrowser1.Navigate(new Uri(address, UriKind.Absolute));
    }

    void webBrowser1_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
    {
        response = e.Uri.ToString();
        System.Diagnostics.Debug.WriteLine(e.Uri.ToString());
        if (response.LastIndexOf("access_token=") != -1)
        {
            string token = response.Substring(response.LastIndexOf("#access_token=") + "#access_token=".Length);
            System.Diagnostics.Debug.WriteLine("TOKEN: " + token);
        }
    }

Как только вы разрешили доступ, вы в конечном итоге получаете URI обратного вызова с access_token. Обратите внимание, что webBrowser1_Navigated может вызываться несколькими (каждый раз, когда вы переходите на другую страницу во встроенном веб-браузере).

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

Этот код EPIC, буквально удивительный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...