微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring Security Apple 登录

如何解决Spring Security Apple 登录

所以我尝试在我的 Spring Boot 后端应用程序中使用 Apple Sign in with REST API,一切正常!在我尝试访问用户名之前,即使我在范围内要求 name,苹果似乎也没有发回该名称,并且文档清楚地表明他们不提供用户信息 uri,但是 {{ 1}} 似乎在响应负载中返回一个 AppleJS 对象

是的,我实现了自定义 OIDC UserDetails 服务。

user

.

    public class CompactOAuth2UserService implements OAuth2UserService<OidcUserRequest,OidcUser>

如何获取用户名?如果不可能,最佳做法是什么?

解决方法

看起来 name 范围需要包含在 /auth/authorize 端点的查询参数中。然后它将作为您提到的 user 对象包含在响应中。注意:不过,它似乎会拆分名字和姓氏。

来自:https://developer.apple.com/forums/thread/118209

要在 id_token 中请求用户信息(假设您通过 /auth/authorize REST API 请求),您需要包含 scope 查询参数,该参数支持以下值— nameemail。您可以请求一个、两个或一个都不请求。

注意:对多个范围使用空格分隔和百分比编码;例如,"scope=name%20email"

那么,https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_js/incorporating_sign_in_with_apple_into_other_platforms

处理响应

当“使用 Apple UI 登录”出现在打开的浏览器选项卡中时,用户可以登录并接受您应用的任何条款和条件。 Apple 处理授权请求后,响应的处理取决于 response_mode 中的值:

...

成功的响应包含以下参数:

... 用户

  • 一个 JSON 字符串,包含在 scope 属性中请求的数据。返回的数据格式如下: { "name": { "firstName": string,"lastName": string },"email": string }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。