【发布时间】:2022-01-12 23:26:12
【问题描述】:
我是 Ejabberd 和 Erlang 的新手,我很难理解为什么我只能使用 GET 方法而不是 POST 进行身份验证。
我可以使用 GET (https://myserver/oauth/authorization_token?response_type=token&client_id=Client1&redirect_uri=http://client.uri&scope=ejabberd:admin) 成功进行身份验证,它会打开一个我将在凭据并提交,它会将我重定向到http://client.uri/?access_token=VuzKqO55OZoCFp45lBkapLis3dsMGKB7&token_type=bearer&expires_in=31536000&scope=ejabberd:admin&state= 之类的网址。
问题是,我不想使用网络表单,我想直接从我的应用程序中使用 API,但是我不允许直接使用 POST 方法,即使 Ejabberd 在幕后使用了这种方法。
我可以在ejabberd_oauth.erl这两种方法中看到它。
process(_Handlers,
#request{method = 'GET', q = Q, lang = Lang,
path = [_, <<"authorization_token">>]})
和
process(_Handlers,
#request{method = 'POST', q = Q, lang = _Lang,
path = [_, <<"authorization_token">>]})
我不明白为什么 GET 可以访问而 POST 不能访问。
【问题讨论】: