如何使用微信登录Parse Server进行OAuth

How to OAuth using WeChat Login for Parse Server

我们想在连接到 Heroku 上的 Parse Server 后端的 iOS 客户端上启用微信登录。看了PFFFacebookAuthenticationProvider,看来我们需要为微信写一个自定义的认证提供者。

微信登录基于OAuth 2.0。它的工作原理如下: 1. 从我们的应用程序,向安装在同一 phone 上的微信应用程序发送授权请求。微信app被调用到前台。 2. 用户批准授权请求后,代码(不是访问令牌)将发送到我们的应用程序。 3. 有了代码和我们的app id 和app secret,我们的服务器就可以调用微信API 并从微信获取适当的用户id 和访问令牌。此步骤必须在我们的服务器上进行,因为我们不能在客户端应用程序中包含应用程序机密。

在微信文档中,强烈建议我们将access token严格控制在服务器端(任何拥有access token的人都可以向微信发起请求API,这将被计入使用量我们的 API 次调用限制)。

如果我们要遵循这种做法,我们不能将访问令牌保存在用户的 authData 字段中。仅将微信的code和id保存到authData并将访问令牌保存到另一个只有主密钥才能访问的class是否可以接受?这显然需要我们为 Parse Server 编写一个自定义的 AuthAdapter。

或者有没有更好的方法来实现这个自定义授权? Parse Server 的自定义 auth 文档非常薄,我计划在我自己可以使用它之后对其进行改进。

您绝对可以更新身份验证适配器以交换访问令牌服务器端的代码。逻辑与其他适配器类似,如果服务器无法处理代码以访问令牌交换,则无法 login/signup。

这里 https://github.com/parse-community/parse-server/blob/master/src/Adapters/Auth/wechat.js#L7

如果 authData 对象具有该代码,您可以添加额外的逻辑来交换它。