2

我正在考虑将现有的使用 Facebook 登录流程迁移到使用 Apple 登录,希望完全从我们的 iOS 应用程序中消除 FB 登录。

客户端似乎很简单,但是有一个主题我似乎看不到有关 Stack Overflow 的任何文档或讨论 - 使用 Apple 登录等效于 FB 应用程序访问令牌。

Facebook 登录支持不同的令牌类型(https://developers.facebook.com/docs/facebook-login/access-tokens/),目前我们的应用后端支持 2 个身份验证流程。

  1. 从最终应用程序用户开始,他们使用 Facebook 登录,将提供的客户端用户访问令牌发送到应用程序后端,后者根据 Facebook 验证令牌,然后向应用程序客户端发出应用程序特定的 JWT 令牌,该令牌用于进一步的应用程序 API 调用,直到到期。

  2. 从后端服务器组件。这些从 Facebook 请求应用访问令牌,例如

curl -X GET "https://graph.facebook.com/oauth/access_token  
  ?client_id={your-app-id}  
  &client_secret={your-app-secret}  
  &grant_type=client_credentials" 

然后将应用访问令牌发送到应用后端,该后端针对 Facebook 验证令牌,然后发出一个特定于应用的 JWT 令牌,用于进一步的服务器到服务器 API 调用,直到到期。

替换上面的 1 似乎很简单,但是 2 呢?是否有一种机制可以实现与 Sign In with Apple 相同的流程?

似乎https://developer.apple.com/documentation/signinwithapplerestapi将是用于验证的 API,但是有没有办法首先生成一个等效于 Sign In with Apple 的应用程序访问令牌来验证使用这个REST API?

谢谢

4

1 回答 1

1

我认为这是可能的

我还不确定如何真正使用它或验证它,但是您在生成和验证令牌时的响应中会得到一个access_tokenhttps://appleid.apple.com/auth/token

access_token从 Apple获取

此示例假设您有一个 Authorization Grant Code,但如果您有一个等,则同样可以refresh_token

client_id
client_secret
code
grant_type
redirect_uri
  • 如果成功,这将返回:
**access_token**
token_type
expires_in
id_token

我不确定这是否是您正在寻找的access_token类型,但我想提请您注意。

暂时可能没用

写完这篇文章后,我在 Apple 所说的论坛中遇到了这个帖子:

目前,访问令牌仅表示成功的刷新令牌验证。目前没有可以使用它的端点,它被保留以供将来使用。所以,暂时可以忽略。

于 2020-08-08T19:51:21.547 回答