当前位置: 首页 > 面试题库 >

是否可以在没有重定向服务器的情况下使用OAuth 2.0?

朱丰
2023-03-14
问题内容

我正在尝试创建一个与SurveyMonkey API交互的基于Java的本地客户端。

SurveyMonkey需要使用OAuth 2.0的长期访问令牌,我对此不太熟悉。

我已经搜索了几个小时,但我认为答案是否定的,但我只想确定一下:

我是否可以编写一个与SurveyMonkey交互的简单Java客户端, 而无需在某些云中设置自己的重定向服务器

我觉得必须拥有自己的在线服务才能接收OAuth 2.0生成的承载令牌。我可能无法让SurveyMonkey直接将承载令牌发送给我的客户端吗?

如果我要在某个地方设置自己的自定义Servlet,并将其用作redirect_uri,则正确的流程如下:

  1. 来自SurveyMonkey的Java客户端请求承载令牌,其中redirect_uri是我自己的自定义servlet URL。
  2. SurveyMonkey将令牌发送到我的自定义servlet URL。
  3. Java客户端轮询自定义servlet URL,直到令牌可用为止?

这样对吗?


问题答案:

不完全是,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中的一个与您在应用程序设置中设置的内容相匹配)

因此,如果您的重定向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需要一个向您发送代码的地方,您不能只请求一个。



 类似资料:
  • 是否可以在没有实体的情况下使用JpaRepository?在这种情况下,将其替换为DTO。 如下示例所示 这种情况有替代方案吗? 注意:DTO已经映射,但我不想创建视图来将此DTO转换为实体。 我已经验证了这个主题,但没有重大进展,请使用无实体的JpaRepository交互样式 我在试这个 接口- 公共接口BffDTOInterface2{ } 我有这个错误

  • 我想使用并使其直接进入给定的url,而不是从ribbon配置中获取主机。 我知道在Spring,cloud-feign默认与ribbon和eureka一起出现。 根据这个:https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-ribbon.html#spring-cloud-ribbon-without-eure

  • 我正在尝试用ClearKeys配置shaka player,比如 如文件规定。但是,我没有有效的许可证服务器。 如果我在DRM中配置没有"服务器"对象 shaka播放器给出错误代码6012 那么,有没有可能在没有Licensne服务器的情况下,将shaka player配置为使用clearkeys玩DASH呢? 链接的Github问题-https://github.com/google/shaka

  • 在Spring Boot的文档中,我只找到了使用Redis会话的例子,不使用Redis也能使用它吗?

  • 有人能帮我回答以下问题吗: 我有一个启用SSL的REST服务器和一个位于两台不同计算机上的REST客户端。两者都是用Spring Boot构建的。服务器将具有。p12或。pfx证书。

  • 我已经从源代码处构建并安装了另一个glibc,并且我想让现有的用C++编写的可执行文件与自定义glibc一起运行,以供实验之用。为了做到这一点,我尝试更改可执行文件的加载程序。首先,在/lib64下创建了一个名为的链接,其路径指向新的加载程序 其次,通过文本编辑器修改了可执行文件中的加载器路径,将“/lib64/ld-linux-x86-64.so.2”更改为“/lib64/ld_linux-x8