| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- const {
- initApple
- } = require('../../lib/third-party/index')
- const {
- ERROR
- } = require('../../common/error')
- const {
- preUnifiedLogin,
- postUnifiedLogin
- } = require('../../lib/utils/unified-login')
- const {
- LOG_TYPE
- } = require('../../common/constants')
- /**
- * 苹果登录
- * @tutorial https://uniapp.dcloud.net.cn/uniCloud/uni-id-pages.html#login-by-apple
- * @param {Object} params
- * @param {String} params.identityToken 苹果登录返回的identityToken
- * @param {String} params.nickname 用户昵称
- * @param {String} params.inviteCode 邀请码
- * @returns
- */
- module.exports = async function (params = {}) {
- const schema = {
- identityToken: 'string',
- nickname: {
- required: false,
- type: 'nickname'
- },
- inviteCode: {
- required: false,
- type: 'string'
- }
- }
- this.middleware.validate(params, schema)
- const {
- identityToken,
- nickname,
- inviteCode
- } = params
- const appleApi = initApple.call(this)
- let verifyResult
- try {
- verifyResult = await appleApi.verifyIdentityToken(identityToken)
- } catch (error) {
- console.error(error)
- await this.middleware.uniIdLog({
- success: false,
- type: LOG_TYPE.LOGIN
- })
- throw {
- errCode: ERROR.GET_THIRD_PARTY_ACCOUNT_FAILED
- }
- }
- const {
- openid
- } = verifyResult
- const {
- type,
- user
- } = await preUnifiedLogin.call(this, {
- user: {
- apple_openid: openid
- }
- })
- return postUnifiedLogin.call(this, {
- user,
- extraData: {
- nickname
- },
- isThirdParty: true,
- type,
- inviteCode
- })
- }
|