我正在构建一个使用google/facebook oauth2认证的spring-boot应用程序。应用程序配置集如下所示:
#Google
spring.security.oauth2.client.registration.google.clientId=<googleClientId>
spring.security.oauth2.client.registration.google.clientSecret=<googleClientSecret>
spring.security.oauth2.client.registration.google.redirectUri={baseUrl}/oauth2/callback/{registrationId}
spring.security.oauth2.client.registration.google.scope=email,profile
#Facebook
spring.security.oauth2.client.registration.facebook.clientId=<fbClientId>
spring.security.oauth2.client.registration.facebook.clientSecret=<fbClientSecret>
spring.security.oauth2.client.registration.facebook.redirectUri={baseUrl}/oauth2/callback/{registrationId}
spring.security.oauth2.client.registration.facebook.scope=email,public_profile
spring.security.oauth2.client.provider.facebook.authorizationUri=https://www.facebook.com/v13.0/dialog/oauth
spring.security.oauth2.client.provider.facebook.tokenUri=https://graph.facebook.com/v13.0/oauth/access_token
spring.security.oauth2.client.provider.facebook.userInfoUri=https://graph.facebook.com/v13.0/me?fields=id,first_name,middle_name,last_name,name,email,verified,is_verified,picture.width(250).height(250)
字符串
对于google来说,这很好用--应用程序有一个重定向到google auth端点的authorization rest控制器。登录后,我可以看到一个代码被返回并发送到一个重定向URI {baseUrl}/ouath 2/callback/google,它被交换为一个令牌,该令牌反过来被解析并用于构造一个通用的应用程序级Oauth2承载令牌(用于我的共享API等)。
对于Facebook,我正在尝试类似的设置。初始重定向工作,用户被定向到Facebook登录页面,并设置了等效的client_id / redirect uri参数:
https://www.facebook.com/v3.0/dialog/oauth
?response_type=code
&client_id=<fbClientId>
&scope=email+public_profile
&state=<state>
&redirect_uri=https%3A%2F%2F192.168.50.150.nip.io%3A8300%2Foauth2%2Fcallback%2Ffacebook
&ret=login
&fbapp_pres=0
&logger_id=e1036c5a-ac6e-448c-ab8g-655727eae993
&tp=unspecified
&cbt=1643459835928
&ext=1645463198
&hash=AeJog6HeUz9jlsDRQQo
型
然而,当登录后获得代码并发送到重定向uri {baseUrl}/ouath 2/callback/facebook时,当我的应用程序尝试访问FB用户信息资源服务器时返回错误:
x1c 0d1x的数据
的
我没有从我的后端到FB用户信息URI的任何流量捕获,所以我不能确切地看到正在发送的内容,但我得到的响应是服务器错误:
[invalid_user_info_response]尝试检索UserInfo资源时出错:错误详细信息:[用户信息URI:https://graph.facebook.com/v3.0/me?fields=id,first_name,middle_name,last_name,name,email,verified,is_verified,picture.width(250).height(250),错误代码:服务器错误]
graph.facebook.com端点是否存在任何已知问题?
1条答案
按热度按时间wn9m85ua1#
将v13更改为v17,并删除字段
is_verified
旧的
字符串
新的
型
你可以在这样的链接上测试https://developers.facebook.com/tools/explorer?method=GET&path=me%3Ffields%3Did%2Cfirst_name%2Cmiddle_name%2Clast_name%2Cname%2Cemail%2Cverified%2Cpicture.width(250).height(250)&version=v17.0
的数据
相关的有用配置可以在https://github.com/spring-projects/spring-security/blame/main/config/src/main/java/org/springframework/security/config/oauth2/client/CommonOAuth2Provider.java上看到