提交 7e159890 编写于 作者: Q qiang

feat: univerify

上级 ac1c9ca4
......@@ -204,6 +204,9 @@ const third = [
'login',
'checkSession',
'getUserInfo',
'preLogin',
'onAuthViewOtherLoginButtonClick',
'closeAuthView',
'share',
'shareWithSystem',
'showShareMenu',
......
const provider = {
UNIVERIFY: 'univerify'
}
export const preLogin = {
provider: {
type: String,
required: true,
default: provider.UNIVERIFY,
validator (value, params) {
if (Object.values(provider).indexOf(value) < 0) {
return 'provider error'
}
}
}
}
import {
invoke
} from '../../bridge'
import {
warpPlusSuccessCallback,
warpPlusErrorCallback
} from '../util'
const loginServices = {}
function getService (provider) {
return new Promise((resolve, reject) => {
plus.oauth.getServices(services => {
const service = services.find(({ id }) => id === provider)
service ? resolve(service) : reject(new Error('provider not find'))
}, reject)
})
}
const loginByService = (provider, callbackId) => {
/**
* 微信登录
*/
export function login (params, callbackId) {
const provider = params.provider || 'weixin'
getService(provider).then(service => {
function login () {
loginServices[provider].login(res => {
service.login(res => {
const authResult = res.target.authResult
invoke(callbackId, {
code: authResult.code,
......@@ -18,53 +34,27 @@ const loginByService = (provider, callbackId) => {
code: err.code,
errMsg: 'login:fail:' + err.message
})
}, provider === 'apple' ? { scope: 'email' } : {})
}, provider === 'apple' ? { scope: 'email' } : params.univerifyStyle || {})
}
// 先注销再登录
// apple登录logout之后无法重新触发获取email,fullname
if (provider === 'apple') {
login()
} else {
loginServices[provider].logout(login, login)
service.logout(login, login)
}
}
/**
* 微信登录
*/
export function login (params, callbackId) {
const provider = params.provider || 'weixin'
if (loginServices[provider]) {
loginByService(provider, callbackId)
} else {
plus.oauth.getServices(services => {
loginServices[provider] = services.find(({
id
}) => id === provider)
if (!loginServices[provider]) {
}).catch(err => {
invoke(callbackId, {
code: '',
errMsg: 'login:fail:登录服务[' + provider + ']不存在'
})
} else {
loginByService(provider, callbackId)
}
}, err => {
invoke(callbackId, {
code: err.code,
code: err.code || '',
errMsg: 'login:fail:' + err.message
})
})
}
}
export function getUserInfo (params, callbackId) {
const provider = params.provider || 'weixin'
const loginService = loginServices[provider]
if (!loginService || !loginService.authResult) {
return invoke(callbackId, {
errMsg: 'operateWXData:fail:请先调用 uni.login'
})
}
const errorCallback = warpPlusErrorCallback(callbackId, 'operateWXData')
getService(provider).then(loginService => {
loginService.getUserInfo(res => {
let userInfo
if (provider === 'weixin') {
......@@ -90,12 +80,10 @@ export function getUserInfo (params, callbackId) {
realUserStatus: appleInfo.realUserStatus
}
} else {
loginService.userInfo.openId = loginService.userInfo.openId || loginService.userInfo.openid ||
loginService.authResult.openid
loginService.userInfo.nickName = loginService.userInfo.nickName || loginService.userInfo.nickname
loginService.userInfo.avatarUrl = loginService.userInfo.avatarUrl || loginService.userInfo.avatarUrl ||
loginService.userInfo.headimgurl
userInfo = loginService.userInfo
userInfo.openId = userInfo.openId || userInfo.openid || loginService.authResult.openid
userInfo.nickName = userInfo.nickName || userInfo.nickname
userInfo.avatarUrl = userInfo.avatarUrl || userInfo.headimgurl
}
const result = {
errMsg: 'operateWXData:ok'
......@@ -112,9 +100,10 @@ export function getUserInfo (params, callbackId) {
result.userInfo = userInfo
}
invoke(callbackId, result)
}, err => {
}, errorCallback)
}).catch(() => {
invoke(callbackId, {
errMsg: 'operateWXData:fail:' + err.message
errMsg: 'operateWXData:fail:请先调用 uni.login'
})
})
}
......@@ -133,3 +122,19 @@ export function operateWXData (params, callbackId) {
}
}
}
export function preLogin (params, callbackId) {
const successCallback = warpPlusSuccessCallback(callbackId, 'preLogin')
const errorCallback = warpPlusErrorCallback(callbackId, 'preLogin')
getService(params.provider).then(service => service.preLogin(successCallback, errorCallback)).catch(errorCallback)
}
export function onAuthViewOtherLoginButtonClick (callbackId) {
getService('univerify').then(service => service.onOtherLoginButtonClick(() => {
invoke(callbackId, {})
}))
}
export function closeAuthView () {
getService('univerify').then(service => service.closeAuthView())
}
\ No newline at end of file
......@@ -178,6 +178,15 @@ export function warpPlusEvent (module, name) {
}
}
export function warpPlusSuccessCallback (callbackId, neme) {
return function errorCallback (result) {
result = result || {}
invoke(callbackId, Object.assign({}, result, {
errMsg: `${neme}:ok`
}))
}
}
export function warpPlusErrorCallback (callbackId, neme, errMsg) {
return function errorCallback (error) {
error = error || {}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册