Невозможно обменять код авторизации OAuth на токен доступа - PullRequest
0 голосов
/ 12 мая 2018

Я просто пытаюсь создать простое приложение, но не могу даже пройти аутентификацию пользователя.Я использую клиентскую библиотеку Google OAuth для Java.
Вот текущие шаги, которые я предпринимаю:

  1. Запустите локальный веб-сервер для прослушивания ответа обратной связи после проверки подлинности OAuth.
  2. Создание URL-адреса авторизации:

    String url = new AuthorizationCodeRequestUrl(AUTH_URL, CLIENT_ID)   
            .setScopes(scopes) // Contains https://www.googleapis.com/auth/drive.readonly
            .setRedirectUri(LOCALHOST + r.getPort()) // Port of local web server
            .build();
    
  3. Использование URL-адреса для аутентификации аккаунта.
  4. Google возвращает код авторизации.
  5. Обменкод авторизации для токена доступа.

    TokenResponse token = new AuthorizationCodeTokenRequest(...)
    .setRedirectUri("http://localhost") // <--
    .setClientAuthentication(getClientAuth()) // ClientParametersAuthentication object
    .execute();
    

Здесь возникает моя проблема.Независимо от того, какое значение я ввел для redirect_uri, я всегда получаю {"error":"redirect_uri_mismatch","error_description":"Bad Request"} взамен.
При поиске в Google ошибки, каждый результат говорит о том, что отправленное redirect_uriне зарегистрирован в консоли API.
Когда я загружаю json-файл с учетными данными, раздел redirect_uris содержит "urn:ietf:wg:oauth:2.0:oob","http://localhost", но это все та же ошибка, независимо от того, что я вставил.

Я пошел нараздел «Учетные данные» проекта, чтобы исправить это, но поскольку это установленное приложение, создание учетных данных для проекта дает мне возможность no установить любой URI перенаправления.Единственный способ получить доступ к изменению redirect_uris - это создать учетные данные для «веб-приложения», но это не веб-приложение, и у меня нет домена, на который он может перенаправить.

Так что яЯ застрял, опции redirect_uri мне не доступны, и никакое значение, которое я использую, не работает, я, честно говоря, не знаю, что еще попробовать.Какие шаги я могу предпринять, чтобы это исправить?

1 Ответ

0 голосов
/ 12 мая 2018

Оказывается, что тот же redirect_uri должен использоваться для кода авторизации и токена доступа, даже если он не будет использоваться для получения токена доступа.

...