Skip to content

Commit 4f0f726

Browse files
committed
Fetch user first name and last name from Apple Sign-In
1 parent 15b24f5 commit 4f0f726

File tree

3 files changed

+19
-0
lines changed

3 files changed

+19
-0
lines changed

providers/apple/apple.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,8 @@ func (p Provider) FetchUser(session goth.Session) (goth.User, error) {
140140
AccessToken: s.AccessToken,
141141
RefreshToken: s.RefreshToken,
142142
ExpiresAt: s.ExpiresAt,
143+
FirstName: s.FirstName,
144+
LastName: s.LastName,
143145
}, nil
144146
}
145147

providers/apple/apple_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ func TestAuthorize(t *testing.T) {
9393

9494
_, err := session.Authorize(p, url.Values{
9595
"code": []string{"<authorization code from successful authentication>"},
96+
"user": []string{"{\"first_name\":\"John\",\"last_name\":\"Doe\"}"},
9697
})
9798
if err != nil {
9899
errStr := err.Error()

providers/apple/session.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ type Session struct {
3232
AccessToken string
3333
RefreshToken string
3434
ExpiresAt time.Time
35+
FirstName string
36+
LastName string
3537
ID
3638
}
3739

@@ -119,6 +121,20 @@ func (s *Session) Authorize(provider goth.Provider, params goth.Params) (string,
119121
IsPrivateEmail: idToken.Claims.(*IDTokenClaims).IsPrivateEmail.Value(),
120122
EmailVerified: idToken.Claims.(*IDTokenClaims).EmailVerified.Value(),
121123
}
124+
125+
if user := params.Get("user"); user != "" {
126+
var userData struct {
127+
Name struct {
128+
FirstName string `json:"firstName"`
129+
LastName string `json:"lastName"`
130+
} `json:"name"`
131+
Email string `json:"email"`
132+
}
133+
if err := json.Unmarshal([]byte(user), &userData); err == nil {
134+
s.FirstName = userData.Name.FirstName
135+
s.LastName = userData.Name.LastName
136+
}
137+
}
122138
}
123139

124140
return token.AccessToken, err

0 commit comments

Comments
 (0)