我的目标是使用Passport将Meetup oauth2添加到Open Collective,一个Node.js服务器。 (我之前使用GitHub oauth2成功,所以原则上它只是添加Passport strategy passport-meetup-oauth2
。)
为了避免使用localhost的任何问题(在其他SO票证中观察到的问题),我使用了HTTPS ngrok隧道。在Meetup.com上我created新消费者:
在我的代码中,我将MeetupStrategy配置为:
然后我尝试了这个流程:我被正确地重定向到Meetup.com,我要求他登录并单击“允许”,然后我被重定向回我的服务器,但Passport发出{{3} }:
{ 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 }
第二个oauth2步骤(为authorization_code
交换access_token
)引发了错误:Passport调用Meetup API,它使用HTTP 400 Bad Request
{"error":"invalid_client"}
进行回复。在500 TokenError中添加日志后,我可以重现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和秘密似乎是正确的。知道导致错误的是什么吗?