使用 git 上面的包
"github.com/Timothylock/go-signin-with-apple/apple"
示例代码
var (
clientId = "xxxxxxx" // 这个就是 app 的 bundleID
teamId = "ZTxxxxxxxxx"
keyId = "Kxxxxxxxx"
secret = `
-----BEGIN PRIVATE KEY-----
.........
-----END PRIVATE KEY-----
`
)
authCode := c.PostForm("auth_code") // app 调用苹果登陆成功返回的 auth_code
// 初始化客户端
secret, err := apple.GenerateClientSecret(secret, teamId, clientId, keyId)
client := apple.New()
vReq := apple.AppValidationTokenRequest{
ClientID: clientId,
ClientSecret: secret,
Code: authCode,
}
// 请求 apple 验证 auth_code
var resp apple.ValidationResponse
err = client.VerifyAppToken(context.Background(), vReq, &resp)
if err != nil {
fmt.Println("error verifying: " + err.Error()) // 签名错误
return
}
if resp.Error != "" {
fmt.Println("apple returned an error: " + resp.Error) // auth_code 校验失败
return
}
// 获取用户的唯一标识 unique
unique, err := apple.GetUniqueID(resp.IDToken)
if err != nil {
fmt.Println("failed to get unique ID: " + err.Error())
return
}
// 获取用户 email
claim, err := apple.GetClaims(resp.IDToken)
if err != nil {
fmt.Println("failed to get claims: " + err.Error())
return
}
fmt.Println(unique) // 用户唯一标识
fmt.Println((*claim)["email"]) // 用户 email
fmt.Println((*claim)["email_verified"]) // 用户 email 是否验证锅
整体流程比较简单,这里说下 teamId、keyId、secret 这三个参数怎么获取
登陆 苹果开发者中心 ,
选择 Certificates, Identtifiers & Profiles
选择 Keys
点击 + , 输入 Key Name
勾选 Sign in with Apple, 点击右面的 Configure,选择自己的 bundleID
点击 Continue
Keys 已经创建好,这里已经显示 Key ID
teamID 如图
secret 点击右上角 Downlod 下载