2014-12-12 2 views
1

Я здесь новый. Простите меня, если есть какие-то правила, за которыми я не следил, и не стесняйтесь сообщить мне об этом.Google Calendar apis V3 - образец кода OAuth2.0 в VB.NET

У меня возникла проблема с аутентификацией OAuth2.0 при использовании Google Calendar apis V3.

Вот код.

Sub Main() 
    Dim secret As New ClientSecrets 
    secret.ClientId = "XXXXXXXXXX.apps.googleusercontent.com" 
    secret.ClientSecret = "XXXXXXXXXXXXXX" 

    Dim init As New Flows.AuthorizationCodeFlow.Initializer("https://accounts.google.com/o/oauth2/auth", "https://accounts.google.com/o/oauth2/token") 
    init.ClientSecrets = secret 

    Dim flow As New Flows.AuthorizationCodeFlow(init) 
    Dim token As Responses.TokenResponse = flow.LoadTokenAsync("[email protected]", CancellationToken.None).Result 
    Dim credential As New UserCredential(flow, "[email protected]", token) 


    Try 
     credential = GoogleWebAuthorizationBroker.AuthorizeAsync(secret, {CalendarService.Scope.Calendar}, "user", CancellationToken.None,).Result 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 

Он может успешно всплывать журнал Google в интерфейсе

Однако он появляется сообщение об ошибке «Error: redirect_uri_mismatch»

Это странно, что я уже настроить учетную Перенаправление URL, который

http://localhost:8080/ 

в Google Developers Console

Но деталь ошибки msg показывает, что URL-адрес переадресации не тот, который я задал, и продолжаю изменять номер порта локального хоста.

Я думаю, что проблема приходит от линии ниже

Dim token As Responses.TokenResponse = flow.LoadTokenAsync("[email protected]", CancellationToken.None).Result 

Что-то мне не хватает понимания или какой-либо параметр я его потерял?

Цените, если кто-нибудь может это помочь.

+0

Вы нашли ответ на этот вопрос? Я также сталкиваюсь с той же проблемой. –

+0

Я думаю, что это неправильно в настройке URL-адреса переадресации, который не может быть локальным сайтом. Я предлагаю вам использовать некоторый URL-адрес, доступный из внешней сети. – Jamie

+0

Во-вторых, я также использую другой код для замены раздела «Кодовая биржа», например, ниже 'token = flow.ExchangeCodeForTokenAsync (« пользователь », код, strUri, CancellationToken.None) .Result' – Jamie

ответ

0

Visual studio любит случайно менять номер порта. Вы можете настроить это, чтобы не делать этого. Должно быть где-то на project properties -> web -> project URL.

Или

Вы можете перейти в консоль разработчиков Google и создать Client ID for native application использовать это, чтобы проверить на вашем локальном хосте.

Не отпускайте этот для производства при перемещении его на свой веб-сайт изменить его обратно в Client ID for web application

Смежные вопросы