Integration requires code grant discord как исправить

Чтобы подключить бота Discord в ваше приложение, вам понадобятся токен бота (для настройки модуля) и ID канала, в который вы будете отправлять сообщения (для формы отправки).

Чтобы подключить бота Discord в ваше приложение, вам понадобятся токен бота (для настройки модуля) и ID канала, в который вы будете отправлять сообщения (для формы отправки).

Расскажем, как создать сервер, канал и бота Discord, а после добавить созданного бота на ваш сервер. О том, как настроить отправку сообщений на платформе AppMaster.io, можно прочитать в этой статье.

Создать сервер и канал, скопировать ID канала

Для начала вам нужно создать новый сервер в Discord (или получить права администратора на уже существующем). Откройте страницу вашей учетной записи Discord в браузере — так будет удобнее перемещаться между страницами настроек.

1. Нажмите на «+» на левой панели.

2. Выберите шаблон сервера в зависимости от вашей сферы или создайте собственный.

3. Укажите, для каких целей хотите его использовать.

4. Выберите изображение будущего сервера и укажите его название (1), затем нажмите Create. (2).

5. Сервер создан. По умолчанию в него уже добавлены два канала — текстовый и голосовой (1). Чтобы изменить настройки канала, нажмите значок шестеренки (2). Добавить новый канал можно, нажав на «+» рядом с названием раздела. Мы не будем создавать новый канал и для подключения нашего бота используем уже существующий канал general.

6. Теперь нужно получить ID выбранного канала. Для этого нужно сначала включить режим разработчика в настройках вашего профиля. Нажмите на значок шестеренки рядом с вашим никнеймом и фотографией.

7. Перейдите в раздел APP SETTINGS, на вкладку Advanced (1) и переместите селектор Developer mode — режим разработчика активируется (2).

8. Вернитесь из меню настроек и кликните по нужному каналу правой клавишей мыши (1), во всплывающем меню выберите Copy ID — идентификатор вашего канала будет скопирован (2). Сохраните его в любом текстовом документе, чтобы не возвращаться к этому шагу.

Создать бота и добавить его на сервер, скопировать токен бота

Чтобы создать бота, перейдите на специальную страницу Discord для разработчиков: https://discord.com/developers/. Откройте ее в соседней вкладке браузера, не выходя из вашей учетной записи Discord.

Сначала вам нужно создать приложение, затем в этом приложении создать бота и настроить для него разрешения, и только после этого — добавлять бота на сервер.

1. На вкладке Applications выберите New Application.

2. Введите название будущего приложения (1) и нажмите Create (2).

3. Приложение создано. Перейдите не вкладку Bot (1) и нажмите Add Bot, чтобы добавить нового бота.

4. Согласитесь добавить бота в ваше приложение.

5. Бот создан. На вкладке Bot отобразится вся информация о нем. Тут можно изменить его имя, добавить изображение и скопировать токен бота (1). Этот токен понадобится вам для настройки модуля Discord на платформе Appmaster.i. Каждый раз при внесении изменений портал разработчика будет предлагать вам сохранить их (2).

Сохраните токен бота, чтобы при последующей настройке не возвращаться к этому шагу.

6. Теперь перейдите на вкладку OAuth2 (1) — тут можно настроить разрешения и получить ссылку на вашего бота. В разделе SCOPES выберите bot(2), в BOT PERMISSIONS отметьте разрешения, которые хотите ему предоставить, в нашем случае — только отправка сообщений, поэтому выберите Send Message(3). После скопируйте автоматически сгенерированную Discord ссылку(4).

7. Вставьте скопированную ссылку в адресную строку браузера и перейдите по ней — откроется окошко вашего приложения. Выберите ваш сервер в раскрывающемся списке (1) и нажмите Continue (2).

8. Убедитесь, что приложению (а значит, и созданному в нем боту) даны только необходимые разрешения, после чего добавьте его на ваш сервер.

9. Теперь вернитесь на ваш сервер. Бот оставил приветственное сообщение — значит, что он успешно добавлен и функционирует.

Через AppMaster.io Studio подключить бота в приложение

Итак, все готово. Вы получили токен бота для модуля Discord и ID канала для формы отправки сообщения. Теперь перейдите в AppMaster.io Studio и настройте отправку сообщений из вашего приложения, следуя инструкции Модуль Discord: подключение бота и отправка сообщений.

Следите за нашим блогом и присоединяйтесь к чату комьюнити, чтобы узнавать о новостях платформы и новых статьях.

I am trying to implement Discord OAuth2 in my node.js Application. As soon as I try to get the access token from the given authorization code, I always get the HTTP response Error 400 {«error»: «invalid_grant»}

let xhr = new XMLHttpRequest()
xhr.open('POST', 'https://discord.com/api/oauth2/token')

xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')

let payload ={
    client_id: clientID,
    client_secret: clientSecret,
    grant_type: 'authorization_code',
    code: code,
    redirect_uri: redirectUrl,
    scope: 'identify'
};

console.log(payload)
xhr.send(JSON.stringify(payload))

xhr.onreadystatechange = () => {
    console.log(xhr.status)
    console.log(xhr.responseText)
}

xhr.onerror = () => {
    console.log('Failed')
}

asked Jun 17, 2020 at 16:34

lukeplyz's user avatar

Okay I solved the issue. For everyone who is experiencing the same issue that I had, I solved it by using axios and querystring to send the POST request to the Discord API (https://github.com/discord/discord-api-docs/issues/1131)

It seems that there is a problem with the JSON and the x-www-form-urlencoded format.

answered Jun 18, 2020 at 15:14

lukeplyz's user avatar

lukeplyzlukeplyz

811 silver badge6 bronze badges

payload should not be a js object but a form data i.e

let payload = new FormData();
payload.append("key in string","value in string")

answered Nov 12, 2020 at 9:05

Gokul Kurup's user avatar

1

I had the same issue when trying to use on Next.js’s GetServerSideProps function.

After searching a lot, I found an closed issue on Github solving this problem
(Github Issue: Deep Linking with OAuth2 Not Working). Basically, we could not use JSON object on authentication request’s body. We must use URLSearchParams object instead.

The payload should look like:

const payload = new URLSearchParams()

payload.append('client_id', process.env.DISCORD_CLIENT_ID)
payload.append('client_secret', process.env.DISCORD_CLIENT_SECRET)
payload.append('grant_type', 'authorization_code')
payload.append('redirect_uri', process.env.DISCORD_REDIRECT_URI)
payload.append('code', accessCode)
payload.append('scope', 'identify')

answered Nov 24, 2020 at 0:51

Isaac Lourenço's user avatar

In my case, it was a very silly error.
Instead of «response_type», I sent «response_type » (with a space); I randomly realized when I printed the HTML-formatted string and saw a %20 😂
Make sure the parameters have the correct names!

answered Jan 12, 2021 at 23:08

Sasino's user avatar

SasinoSasino

1042 silver badges11 bronze badges

(READ DESC) HOW TO /DISCORD BOT CODE GRANT ERROR — YOUTUBE

read-desc-how-to-discord-bot-code-grant-error-youtube image

Have you tried to make a discord bot and showed up,:code grant required?? Follow the simple steps from the video and it will 100% workEdited with Filmigo:htt…
From youtube.com
Author DeviKiv
Views 7.5K


INTEGRATION REQUIRES CODE GRANT IN BOT – DISCORD

integration-requires-code-grant-in-bot-discord image

Integration requires code grant in bot daniel inderos May 27, 2021 18:10 … so i made a discord bot but when i try to add it to my server this happens, help me. 1. 2 Comments 2 comments. Sort by Date Votes. Joe …
From support.discord.com


DISCORD ADMINISTRATOR BOT — BHOLENATHCOS.COM

discord administrator bot; Feb 06, 2022 new york cosmos team 1977. No Comments | 0 likes | how to beat professional ai fifa 20 …
From bholenathcos.com


BOT REQUIRES CODE GRANT — ABENTEUER-SINGLEMOM.CH

Step 3 â Handling Your First User Command Youâ ve successfully set up a coding environment and created the basic code for logging in to a Discord bot. Whether the bot should require a code grant or not: Returns {Promise} deleteApp apps.deleteApp(appID) Parameter Type Description; appID: String: The client ID of the application you wish to …
From abenteuer-singlemom.ch


DISCORD — BOT COMMANDS NOT WORKING IN «CHANNEL THREADS» FEATURE

The PyPi version of discord.py is only updated to version 1.7.3.However, discord.py only added support for threads in the 2.0 major update. To update to this version, do:
From stackoverflow.com


REQUIRE OAUTH2 CODE GRANT DISCORD — XN—N3CFTFAN7CR7RH2C.COM

Discord bot providing live killmails and intel for the game EVE Online. Within Discord, there are multiple types of OAuth2 authentication. We support the authorization code grant, the implicit grant, client credentials, and some modified special-for-Discord flows for Bots and Webhooks Discord Confirm your action by selecting Yes, do it! The …
From xn--n3cftfan7cr7rh2c.com


BOT REQUIRES CODE GRANT

Bot Requires Code Grant As required to grant flow if your access. All your bot info about this is required! Discord as followers to code su…
From sufferjose.blogspot.com


BOT REQUIRES CODE GRANT · ISSUE #1 · MAGICALSOCIETY/ESO-ASSISTANT

It's not possible to add this bot to Discord servers, since it requires code grant. This needs to be turned off, otherwise the bot cannot be used. See ref link: https://discordbots.co.uk/docs/b…
From github.com


INTEGRATION REQUIRES CODE GRANT IN BOT — DISCORD

Integration requires code grant in bot daniel inderos 2021年05月27日 18:10; so i made a discord bot but when i try to add it to my server this happens, help me. 1. 2 コメント 2件のコメント . 並べ替え基準 日付 …
From support.discord.com


BOT REQUIRES CODE GRANT JOBS, EMPLOYMENT | FREELANCER

Search for jobs related to Bot requires code grant or hire on the world’s largest freelancing marketplace with 19m+ jobs. It’s free to sign up and bid on jobs.
From freelancer.com


LAVORI E ASSUNZIONI DI DISCORD BOT REQUIRES CODE GRANT | FREELANCER

Cerca lavori di Discord bot requires code grant o assumi sulla piattaforma di lavoro freelance più grande al mondo con oltre 20 mln di lavori. Registrati e fai offerte sui lavori gratuitamente.
From freelancer.co.it


OAUTH2 DOCUMENTATION IMPLICITLY STATES APPLICATION.COMMANDS …

Description The text in https://discord.com/developers/docs/topics/oauth2#advanced-bot-authorization hasn't been updated to reflect the addition of the …
From github.com


ERROR WHEN USING PICKLE FOR A DISCORD BOT — STACK OVERFLOW

Probably it is in emoji_var. You should check what you have in emoji_var — print (emoji_var), print ( type (emoji_var) ). And see if you need it or if you can get values from emoji_var as strings, list, dict, int which are pickleabel. – furas. Aug 30, 2020 at 8:43. using Google I found similar problem Why is python pickle failing to dump …
From stackoverflow.com


CôNG VIệC, THUê DISCORD BOT REQUIRES CODE GRANT | FREELANCER

Tìm kiếm các công việc liên quan đến Discord bot requires code grant hoặc thuê người trên thị trường việc làm freelance lớn nhất thế giới với hơn 21 triệu công việc. Miễn phí khi đăng ký và chào giá cho công việc.
From vn.freelancer.com


OAUTH2 DISCORD BOT CODE EXAMPLE — CODEGREPPER.COM

import base64 API_ENDPOINT = ‘https://discord.com/api/v6’ CLIENT_ID = ‘332269999912132097’ CLIENT_SECRET = ‘937it3ow87i4ery69876wqire’ def get_token(): data …
From codegrepper.com


PDISCORD PYTHON BOT REQUIRE ROLES CODE EXAMPLE

Python answers related to “pdiscord python bot require roles” add role discord .py; create a role with discord.py; discord py fetch channel by id; discord py join and leave call; discord.py add role on member join; discord.py bot notification youtube script; discord.py check if user has role; discord.py fetch channel
From codegrepper.com


GIVING A BOT PERMISSIONS IN MY DISCORD : DISCORDAPP — REDDIT

In all honestly give popular bots like dyno and mee6 admin because you have no potential risk at something bad happening but small bots only on 100-200 servers should in no cases be given admin. Also bots with .say should not be given admin (like fredboat) because then a normal user can type .say everyone and it actually works. 3.
From reddit.com


INTEGRATION REQUIRES CODE GRANT DISCORD

Carl-bot is a fully customizable and modular discord bot featuring reaction roles, automod, logging, custom commands and much more. Sentry Integration Platform | Sentry Our integration tutorials are used by creators of all kinds to get apps and integrations up and running in no time — no technical knowledge required.
From parkerslakecommunity.com


INTEGRATION REQUIRES CODE GRANT DISCORD — CAPTUREMEDIA.CH

Using discord oauth2. A simple guide and an example nodeJS … Fill in App Name field, and click the Add Redirect button. Qtum 2021 Roadmap Explanation — Qtum Integration requires code grant in bot. API Reference — Quart-Discord 2.2.0b1 documentation Bot reqiures code grant · Issue #1366 · Just-Some-Bots … UiPath uses OAuth authentication …
From capturemedia.ch


BASIC-DISCORD-BOT | #BOT | BASIC DISCORD BOT

Code Snippets; Community Discussions; Vulnerabilities; Install ; Support ; kandi X-RAY | basic-discord-bot REVIEW AND RATINGS. Basic discord bot. Support. basic-discord-bot has a low active ecosystem. It has 7 star(s) with 1 fork(s). It had no major release in the last 12 months. It has a neutral sentiment in the developer community. Quality . basic-discord-bot has no …
From kandi.openweaver.com


INTEGRATION REQUIRES CODE GRANT DISCORD — WORDSOFLIFE.COM

On your bot’s application page, in the «Bot» tab, turn off the «Requires OAuth2 Code Grant» option. The authorization code is a temporary code that the client will exchange for an access token. Speedrun your web development Autocode is a toolkit for building amazing bots, apps and websites with APIs. SSO Grant Support — Standard OAuth2.0 Grants: Authorization Code, …
From wordsoflife.com


INTEGRATION REQUIRES CODE GRANT DISCORD — TMFLEET.COM

conair style and volumize brush » integration requires code grant discord
From tmfleet.com


BOT REQUIRES CODE GRANT

All groups and messages … …
From groups.google.com


DISCORD BOT COMMANDS CODE JOBS, EMPLOYMENT | FREELANCER

Search for jobs related to Discord bot commands code or hire on the world’s largest freelancing marketplace with 19m+ jobs. It’s free to sign up and bid on jobs.
From freelancer.com


INTEGRATION REQUIRES CODE GRANT DISCORD — PERFECTLYME21.CA

andrew wamsley sister; what is the difference between ofw and immigrant. abandoned places in hamden ct; hospital job vacancy near me; short term student accommodation bristol
From perfectlyme21.ca


REQUIRE OAUTH2 CODE GRANT DISCORD — ENGLISH.DCNEPAL.COM

require oauth2 code grant discorddessert food truck atlanta. smart phone name crossword clue. require oauth2 code grant discordwhat is consumerism in marketing with examples. managing virtual classes ppt. require oauth2 code grant discordused corvette convertible in florida. down syndrome development chart; necromunda cawdor book; bj’s bakery cake order …
From english.dcnepal.com


15 BEST DISCORD BOTS FOR 2022 (REVIEWED AND RANKED) — CODELESS

Mudae is another top bot on Discord. It has more than 9 million discord servers. It is perfect for manga lovers, video games and anime. If you are one of the anime lovers, this is a perfect fit for your server. Mudae is the best bot for its game where you can catch husbandos and waifus of famous video games and manga.
From codeless.co


HOW TO MAKE A DISCORD BOT USING PYTHON AND DISCORD API

Follow the steps given below to create a discord bot account. The first step would be to log in to the Discord Website. Next, Navigate to the “Application Page” and click on the “New Application” button. Now, the next page will ask you to create the application name. Name the application and click on “Create”.
From deasilex.com


OAUTH2 DOCUMENTATION IMPLICITLY STATES `APPLICATION.COMMANDS` …

The text would inform readers that both the bot and application.commands scopes do not require code grant flows. Current Behavior. The text implicitly states that authorising with the application.commands scope requires a code grant flow. Screenshots/Videos. No response. Client and System Information. Firefox Nightly on Android (100.0a1; Build …
From coder.social


CODE A DISCORD BOT AND HOST IT FOR FREE — FREECODECAMP.ORG

3. Click on the “New Application” button. 4. Give the application a name and click “Create”. 5. Go to the “Bot” tab and then click “Add Bot”. You will have to confirm by clicking «Yes, do it!» Keep the default settings for Public Bot (checked) and Require OAuth2 Code Grant (unchecked). Your bot has been created.
From freecodecamp.org


Я продолжаю получать invalid_grant ошибка при попытке получить токен OAuth от Google для подключения к api контактов. Вся информация верна, и я триппл проверил это, так что в тупике.

кто-нибудь знает, что может вызвать эту проблему? Я попытался настроить для него другой идентификатор клиента, но я получаю тот же результат, я попытался подключить много разных способов, включая попытку принудительной аутентификации, но все тот же результат.

14 ответов


Я столкнулся с этой проблемой, когда я явно не запрашивал «автономный» доступ при отправке пользователя в OAuth «вы хотите дать этому приложению разрешение на прикосновение к вашим вещам?» страница.

убедитесь, что вы указали access_type=offline в своем запросе.

подробности здесь:https://developers.google.com/accounts/docs/OAuth2WebServer#offline

(также: я думаю, Google добавил Это ограничение в конце 2011 года. Если у вас есть старые токены до этого, для авторизации автономного использования необходимо отправить пользователей на страницу разрешений.)


я столкнулся с этой же проблемой, несмотря на указание «оффлайн» access_type в моем запросе в соответствии с ответом bonkydog. Короче говоря, я обнаружил, что решение, описанное здесь, сработало для меня:

https://groups.google.com/forum/#!topic/google-analytics-data-export-api/4uNaJtquxCs

по сути, при добавлении клиента OAuth2 в консоль Google API Google предоставит вам «идентификатор клиента «и» адрес электронной почты «(если вы выберете «webapp» в качестве своего тип клиента.) И, несмотря на вводящие в заблуждение соглашения об именах Google, они ожидают, что вы отправите «адрес электронной почты» как значение client_id параметр при доступе к их API OAuth2.

это применяется при вызове обоих этих URL-адресов:

  • https://accounts.google.com/o/oauth2/auth
  • https://accounts.google.com/o/oauth2/token

обратите внимание, что вызов первого URL будет успеха если вы вызываете его с вашим «идентификатором клиента» вместо вашего «адреса электронной почты». Однако использование кода, возвращенного из этого запроса, не будет работать при попытке получить маркер носителя из второго URL-адреса. Вместо этого вы получите сообщение «Error 400» и «invalid_grant».


хотя это старый вопрос, кажется, что многие все еще сталкиваются с ним — мы потратили дни на то, чтобы отслеживать это сами.

в спецификации OAuth2 «invalid_grant» является своего рода catch-all для всех ошибок, связанных с недопустимыми/истекшими/отозванными токенами (auth grant или refresh token).

для нас проблема была двоякой:

  1. пользователь активно отозвал доступ к нашему приложению
    Имеет смысл, но сделать это через 12 часов после отзыв,Google перестает отправлять сообщение об ошибке в ответ:
    “error_description” : “Token has been revoked.”
    Это довольно вводит в заблуждение, потому что вы предположите, что сообщение об ошибке существует все время, что не так. Вы можете проверить, имеет ли ваше приложение доступ в страница разрешения приложений.

  2. пользователь сбросил / восстановил свой пароль Google
    В Декабре 2015 Года, Google изменил их поведение по умолчанию так этот сброс пароля для пользователей, не являющихся пользователями Google Apps, автоматически отменит все токены обновления приложений пользователя. При отзыве сообщение об ошибке следует тому же правилу, что и в предыдущем случае, поэтому вы получите «error_description» только в первые 12 часов. Кажется, нет никакого способа узнать, был ли пользователь вручную отозван доступ (intentful) или это произошло из-за сброса пароля (побочный эффект).

помимо них, существует множество других возможностей причины, которые могут вызвать ошибку:

  1. серверные часы / время не синхронизированы
  2. не авторизован для доступа в автономном режиме
  3. Дросселируется Google
  4. использование токенов обновления с истекшим сроком действия
  5. пользователь неактивен в течение 6 месяцев
  6. используйте электронную почту работника службы вместо идентификатора клиента
  7. слишком много доступа токены в короткие сроки
  8. клиент SDK может быть устаревшим
  9. неверный / неполный токен обновления

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


Я столкнулся с той же проблемой. Для меня я исправил это, используя адрес электронной почты (строка, которая заканчивается на …@developer.gserviceaccount.com) вместо идентификатора клиента для значения параметра client_id. Имя, установленное Google, запутывает здесь.


У меня было такое же сообщение об ошибке «invalid_grant», и это было потому, что
authResult [‘code’]
отправка с клиентской стороны javascript не был получен правильно на сервере.

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


моя проблема заключалась в том, что я использовал этот URL:

https://accounts.google.com/o/oauth2/token

когда я должен был использовать этот URL:

https://www.googleapis.com/oauth2/v4/token

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


Если вы используете библиотеку scribe, просто настройте автономный режим, как предложил bonkydog
вот код:

OAuthService service = new ServiceBuilder().provider(Google2Api.class).apiKey(clientId).apiSecret(apiSecret)
                .callback(callbackUrl).scope(SCOPE).offline(true)
                .build();

https://github.com/codolutions/scribe-java/

1

автор: Oleksii Kyslytsyn


используя Android clientId (без client_secret), я получал следующий ответ об ошибке:

{
 "error": "invalid_grant",
 "error_description": "Missing code verifier."
}

Я не могу найти документацию для поля «code_verifier», но я обнаружил, что если вы установите для него равные значения в запросах авторизации и токена, он удалит эту ошибку. Я не уверен, какое значение должно быть или должно ли оно быть безопасным. Он имеет некоторую минимальную длину (16? символы), но я нашел параметр null тоже работает.

Я использую AppAuth для запроса авторизации в моем клиенте Android, который имеет :

final GoogleAuthorizationCodeTokenRequest req = new GoogleAuthorizationCodeTokenRequest(
                    TRANSPORT,
                    JSON_FACTORY,
                    getClientId(),
                    getClientSecret(),
                    code,
                    redirectUrl
);
req.set("code_verifier", null);          
GoogleTokenResponse response = req.execute();

Это глупый ответ, но проблема для меня заключалась в том, что я не понял, что мне уже был выдан активный токен oAuth для моего пользователя google, который я не смог сохранить. Решение в этом случае-перейти в консоль api и сбросить секрет клиента.

есть множество других ответов на SO для этого эффекта, например
Reset Client Secret OAuth2-нужно ли клиентам повторно предоставлять доступ?


возможно, вам придется удалить устаревший / недопустимый ответ OAuth.

фото: узел.пример с JS в Google OAuth2, которые перестали работать invalid_grant в

Примечание: ответ OAuth также станет недействительным, если пароль, используемый в первоначальной авторизации, был изменен.

Если в среде bash, вы можете использовать следующее, Чтобы удалить устаревший ответ:

rm /Users/<username>/.credentials/<authorization.json>


есть две основные причины для invalid_grant в ошибка, которую вы должны позаботиться до запроса POST для токена обновления и токена доступа.

  1. заголовок запроса должен содержать «content-type: application / x-www-form-urlencoded»
  2. ваша полезная нагрузка запроса должна быть url-кодированными данными формы, не отправляйте как объект json.

RFC 6749 OAuth 2.0 определена invalid_grant в как:
предоставленное разрешение на авторизацию (например, код авторизации, учетные данные владельца ресурса) или токен обновления недействительны, истекли, отозваны, не соответствуют URI перенаправления, используемому в запросе авторизации, или был выдан другому клиенту.

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

https://blog.timekit.io/google-oauth-invalid-grant-nightmare-and-how-to-fix-it-9f4efaf1da35


на этом сайте
console.developers.google.com

на этой консоли выберите ваш проект, введите url клятвы.
url-адрес обратного вызова oauth будет перенаправлен, когда OAuth success


после рассмотрения и попытки всех других способов здесь, вот как я решил проблему в nodejs с googleapis модуль в сочетании с request модуль, который я использовал для извлечения маркеров вместо предусмотренного getToken() способ:

const request = require('request');

//SETUP GOOGLE AUTH
var google = require('googleapis');
const oAuthConfigs = rootRequire('config/oAuthConfig')
const googleOAuthConfigs = oAuthConfigs.google

//for google OAuth: https://github.com/google/google-api-nodejs-client
var OAuth2 = google.auth.OAuth2;
var googleOAuth2Client = new OAuth2(
    process.env.GOOGLE_OAUTH_CLIENT_ID || googleOAuthConfigs.clientId, 
    process.env.GOOGLE_OAUTH_CLIENT_SECRET || googleOAuthConfigs.clientSecret, 
    process.env.GOOGLE_OAUTH_CLIENT_REDIRECT_URL || googleOAuthConfigs.callbackUrl);

/* generate a url that asks permissions for Google+ and Google Calendar scopes
https://developers.google.com/identity/protocols/googlescopes#monitoringv3*/
var googleOAuth2ClientScopes = [
    'https://www.googleapis.com/auth/plus.me',
    'https://www.googleapis.com/auth/userinfo.email'
];

var googleOAuth2ClientRedirectURL = process.env.GOOGLE_OAUTH_CLIENT_REDIRECT_URL || googleOAuthConfigs.callbackUrl; 

var googleOAuth2ClientAuthUrl = googleOAuth2Client.generateAuthUrl({
  access_type: 'offline', // 'online' (default) or 'offline' (gets refresh_token)
  scope: googleOAuth2ClientScopes // If you only need one scope you can pass it as string
});

//AFTER SETUP, THE FOLLOWING IS FOR OBTAINING TOKENS FROM THE AUTHCODE


        const ci = process.env.GOOGLE_OAUTH_CLIENT_ID || googleOAuthConfigs.clientId
        const cs = process.env.GOOGLE_OAUTH_CLIENT_SECRET || googleOAuthConfigs.clientSecret
        const ru = process.env.GOOGLE_OAUTH_CLIENT_REDIRECT_URL || googleOAuthConfigs.callbackUrl
        var oauth2Client = new OAuth2(ci, cs, ru);

        var hostUrl = "https://www.googleapis.com";
        hostUrl += '/oauth2/v4/token?code=' + authCode + '&client_id=' + ci + '&client_secret=' + cs + '&redirect_uri=' + ru + '&grant_type=authorization_code',
        request.post({url: hostUrl}, function optionalCallback(err, httpResponse, data) {
            // Now tokens contains an access_token and an optional refresh_token. Save them.
            if(!err) {
                //SUCCESS! We got the tokens
                const tokens = JSON.parse(data)
                oauth2Client.setCredentials(tokens);

                //AUTHENTICATED PROCEED AS DESIRED.
                googlePlus.people.get({ userId: 'me', auth: oauth2Client }, function(err, response) {
                // handle err and response
                    if(!err) {
                        res.status(200).json(response);
                    } else {
                        console.error("/google/exchange 1", err.message);
                        handleError(res, err.message, "Failed to retrieve google person");
                    }
                });
            } else {
                console.log("/google/exchange 2", err.message);
                handleError(res, err.message, "Failed to get access tokens", err.code);
            }
        });

Я просто использовать request чтобы сделать запрос api через HTTP, как описано здесь:
https://developers.google.com/identity/protocols/OAuth2WebServer#offline

POST /oauth2/v4/token HTTP/1.1
Host: www.googleapis.com
Content-Type: application/x-www-form-urlencoded

code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7&
client_id=8819981768.apps.googleusercontent.com&
client_secret={client_secret}&
redirect_uri=https://oauth2.example.com/code&
grant_type=authorization_code

попробуйте изменить url-адрес requst на

https://www.googleapis.com/oauth2/v4/token

0

автор: Sergiy Voytovych


Понравилась статья? Поделить с друзьями:
  • Intellij idea indexed maven repositories error
  • Integration error packages integration packages not found
  • Intelilite mrs 16 ошибки
  • Integration error customize integration customize not found
  • Integral nonlinearity error