1

我的目标是将 Meetup oauth2 添加到Open Collective,这是一个使用 Passport 的 Node.js 服务器。(我之前用 GitHub oauth2 成功过,所以原则上只是添加Passport 策略 passport-meetup-oauth2。)

为了避免使用 localhost 的任何问题(在其他 SO 票证中观察到的问题),我使用了 HTTPS ngrok 隧道。在 Meetup.com 上,我创建了一个新的消费者:

  • 重定向 URI:https ://e03857fc.ngrok.io (也尝试使用下面提到的完整 callbackURL,结果相同)
  • 网站:留空(也尝试了与重定向 URI 相同的值,结果相同)

在我的代码中,我将 MeetupStrategy 配置为:

然后我尝试流程:我被正确重定向到 Meetup.com,我被要求登录并单击“允许”,然后我被重定向回我的服务器,但 Passport 发出500 TokenError

{ TokenError at Strategy.OAuth2Strategy.parseErrorResponse (~/passport-oauth2/lib/strategy.js:321:12) at Strategy.OAuth2Strategy._createOAuthError (~/passport-oauth2/lib/strategy.js:368:16) at ~/passport-oauth2/lib/strategy.js:167:45 at ~/oauth/lib/oauth2.js:181:18 at passBackControl (~/oauth/lib/oauth2.js:123:9) at IncomingMessage.<anonymous> (~/oauth/lib/oauth2.js:143:7) at emitNone (events.js:91:20) at IncomingMessage.emit (events.js:185:7) at endReadableNT (_stream_readable.js:934:12) at _combinedTickCallback (internal/process/next_tick.js:74:11) at process._tickCallback (internal/process/next_tick.js:98:9) name: 'TokenError', message: undefined, code: 'invalid_client', uri: undefined, status: 500 }

authorization_code第二个 oauth2 步骤(交换为)引发错误access_token: Passport 调用 Meetup API,该 API 以 HTTP 400 回复Bad Request {"error":"invalid_client"}。在oauth lib添加日志后,我可以重现 Meetup invalid_client 错误,如下所示:

curl -v -X POST https://secure.meetup.com/oauth2/access -H "'Content-Type': 'application/x-www-form-urlencoded'" --data "grant_type=authorization_code&redirect_uri=https%3A%2F%2Fe03857fc.ngrok.io%2Fconnected-accounts%2Fmeetup%2Fcallback&client_id=XXX&client_secret=YYY&code=ZZZ"

看起来问题出在 Meetup 方面,因为我可以使用 curl 重现它,并且客户端 ID 和密码似乎正确。知道是什么导致了错误吗?

4

0 回答 0