P粉9491909722023-08-23 18:29:31
是的,可以在没有回调URL的情况下使用OAuth2。 RFC6749介绍了几种流程。隐式流程(现已弃用[1])和授权码流程(Authorization Code)需要重定向URI。然而,资源所有者密码凭证流程(也已弃用[1])不需要。
自RFC6749发布以来,还发布了其他规范,这些规范不需要任何重定向URI:
此外,使用OpenID Connect时,响应模式不一定是重定向到redirect_uri
参数,而可以是对该端点的POST请求。有关详细信息,请参阅OAuth 2.0表单POST响应模式规范。
无论如何,如果上述授权类型不适合您的需求,您可以创建一个自定义授权类型。
P粉7138664252023-08-23 16:15:15
并不完全准确,OAuth流程的整个重点在于用户(你代表其访问数据的客户端)需要给予你访问他们数据的权限。
请参阅身份验证说明。你需要将用户发送到OAuth授权页面:
https://api.surveymonkey.net/oauth/authorize?api_key<your_key>&client_id=<your_client_id>&response_type=code&redirect_uri=<your_redirect_uri>
这将向用户显示一个页面,告诉他们你正在请求访问他们账户的哪些部分(例如查看他们的调查、查看他们的回答等)。一旦用户通过在该页面上点击“授权”来批准,SurveyMonkey将自动跳转到你设置为重定向URI的页面(确保上述URL中的重定向URI与你应用程序设置中设置的相匹配)并返回授权码。
因此,如果你的重定向URL是https://example.com/surveymonkey/oauth
,SurveyMonkey将使用授权码将用户重定向到该URL:
https://example.com/surveymonkey/oauth?code=<auth_code>
然后,你需要使用该授权码通过向https://api.surveymonkey.net/oauth/token?api_key=<your_api_key>
发送POST请求来交换访问令牌,并提供以下POST参数:
client_secret=<your_secret> code=<auth_code_you_just_got> redirect_uri=<same_redirect_uri_as_before> grant_type=authorization_code
这将返回一个访问令牌,然后你可以使用该访问令牌来访问用户账户上的数据。你不需要将访问令牌提供给用户,它是供你使用以访问用户账户的。无需轮询或其他操作。
如果你只是访问自己的账户,可以使用应用程序设置页面提供的访问令牌。否则,除非设置自己的重定向服务器,否则无法为用户获取访问令牌(除非所有用户都属于同一组,即同一账户下的多个用户;但我不会深入讨论这个)。SurveyMonkey需要一个地方来发送授权码给你,你不能只是请求一个。