Чтобы подключить бота 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
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
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
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
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
SasinoSasino
1042 silver badges11 bronze badges
(READ DESC) HOW TO /DISCORD BOT CODE GRANT ERROR — YOUTUBE
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 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).
для нас проблема была двоякой:
-
пользователь активно отозвал доступ к нашему приложению
Имеет смысл, но сделать это через 12 часов после отзыв,Google перестает отправлять сообщение об ошибке в ответ:
“error_description” : “Token has been revoked.”
Это довольно вводит в заблуждение, потому что вы предположите, что сообщение об ошибке существует все время, что не так. Вы можете проверить, имеет ли ваше приложение доступ в страница разрешения приложений. -
пользователь сбросил / восстановил свой пароль Google
В Декабре 2015 Года, Google изменил их поведение по умолчанию так этот сброс пароля для пользователей, не являющихся пользователями Google Apps, автоматически отменит все токены обновления приложений пользователя. При отзыве сообщение об ошибке следует тому же правилу, что и в предыдущем случае, поэтому вы получите «error_description» только в первые 12 часов. Кажется, нет никакого способа узнать, был ли пользователь вручную отозван доступ (intentful) или это произошло из-за сброса пароля (побочный эффект).
помимо них, существует множество других возможностей причины, которые могут вызвать ошибку:
- серверные часы / время не синхронизированы
- не авторизован для доступа в автономном режиме
- Дросселируется Google
- использование токенов обновления с истекшим сроком действия
- пользователь неактивен в течение 6 месяцев
- используйте электронную почту работника службы вместо идентификатора клиента
- слишком много доступа токены в короткие сроки
- клиент SDK может быть устаревшим
- неверный / неполный токен обновления
я написал короткую статью суммирование каждого элемента с некоторым руководством по отладке, чтобы помочь найти виновника. Надеюсь, это поможет.
Я столкнулся с той же проблемой. Для меня я исправил это, используя адрес электронной почты (строка, которая заканчивается на …@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 для токена обновления и токена доступа.
- заголовок запроса должен содержать «content-type: application / x-www-form-urlencoded»
- ваша полезная нагрузка запроса должна быть 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