Nghe tới Apple là nghe tới mùi tiền rồi. Không như Google Play, để đưa mobile app lên Apple Store thì phải mất khá nhiều xèng. Apple Developer Program - US$ 99. Mà lại là còn theo năm nữa -_-
Nếu triển khai Sign in with Google thì miễn phí, còn ông Apple thì... Chưa kể còn phải đầu tư con Mac nữa, chát... Cũng vì thế mà lương của lập trình viên iOS cao hơn Android :))
Sau khi tiêu tiền và trở thành Apple Devloper thì bạn cần:
1. Tạo App ID (https://developer.apple.com/account/resources/identifiers/add/bundleId)
2. Tạo Service ID (https://developer.apple.com/account/resources/identifiers/add/serviceId)
Cài đặt client_id (Identifier), tên miền được phép đăng nhập bằng tài khoản Apple, URL redirect về sau khi đăng nhập xong. URL này bạn sẽ phải lập trình nhận authorization code để gọi /auth/token lấy access_token, refresh_token và id_token JWT. id_token sẽ chứa thông tin của người dùng Apple, bạn lấy làm căn cứ tạo tài khoản và mapping về sau
{
"iss": "https://appleid.apple.com",
"aud": "com.huypv.kqxsweb",
"exp": 1656040385,
"iat": 1655953985,
"sub": "001057.72b3bf902d2140e5adfd322xxxyyyzzz.0312",
"at_hash": "8kx5Obr9Kx96z8u4gga_cA",
"auth_time": 1655953949,
"nonce_supported": true
}
trong đó giá trị của sub là quan trọng. Tùy user lựa chọn lúc đăng nhập và cấp quyền, một số trường hợp user cho phép thì bạn sẽ có được cả thông tin email THẬT của user
3. Tạo Key ID (https://developer.apple.com/account/resources/authkeys/add)
Bước này sẽ giúp bạn có private key để sinh client secret khi gọi API của apple
pay load để sinh client secret sẽ có dạng kiểu này (code Ruby)
{
iss: team_id,
iat: Time.now.to_i,
exp: Time.now.to_i + 86400 * validity_period,
aud: "https://appleid.apple.com",
sub: client_id
}
trong đó team_id là App ID Prefix xem ở mục App IDs https://developer.apple.com/account/resources/identifiers/list/bundleId
client_id thì như đã tạo ở bước 2
Dễ mà, code tích hợp thôi nào