uni.getProvider(OBJECT)
App平台,可用的服务商,是打包环境中配置的服务商,与手机端是否安装了该服务商的App没有关系。
云打包在manifest中配置相关模块和SDK信息,离线打包在原生工程中配置。某个服务商配置被打包进去,运行时就能得到相应的服务供应商。
uni.getProvider({
service: 'oauth', //service String 服务类型 oauth授权登录 share分享 payment支付 push推送
success: function (res) { //成功的回调
console.log(res.provider)
if (~res.provider.indexOf('weixin')) {
uni.login({
provider: 'weixin', //provider Array 得到的服务供应商
success: function (loginRes) {
console.log(JSON.stringify(loginRes));
}
});
}
}
});
uni.login(OBJECT)
uni.login({
provider: 'weixin', //provider String 登录服务提供商
success: function (loginRes) { //成功回调
console.log(loginRes.authResult); //authResult 登录服务商提供的登录信息,服务商不同返回的结果不完全相同
}
});
uni.checkSession
检查登录状态是否过期
uni.getUserInfo(OBJECT)
获取用户信息。
苹果登录
loginApple() {
console.log(111)
var that = this
var app = getApp({allowDefault: true})
setTimeout(function() {
uni.login({
provider: 'apple', //provider String 登录服务提供商
success: function(res) {
console.log(res)
var loginCode = res.code
that.loginCode = loginCode
uni.getUserInfo({ //获取用户信息
provider: 'apple',
lang: "zh_CN",
success: function(userRes) {
// #ifdef APP-PLUS
console.log("苹果登录")
let userInfo = JSON.stringify(userRes.userInfo)
console.log(userInfo)
util.ajax({
url: '/system/applelogin.do',
data: {
"userInfo":userInfo,
},
//服务端的回掉
success: function(result) {
console.log(result)
let data = result.data
if(data.resultCode=="true"){
uni.setStorage({
key: 'useruuid',
data: result.data.user.useruuid
})
app.globalData.provider = result.data.provider
app.globalData.user = result.data.user
console.log("用户已登录")
uni.navigateBack({
delta: 1
});
}else if(data.resultCode=="nouser"){
//没有绑定账号的appleId,需要注册
userInfo = JSON.parse(userInfo)
console.log("nouser")
userInfo.plat = "apple"
uni.setStorageSync("userInfo",userInfo)
uni.navigateTo({
url:"/pages/login/appregister"
})
}
}
})
// #endif
},
//接口调用结束的回调函数(调用成功、失败都会执行)
complete: function(res) {
// console.log(res)
}
})
},
//接口调用失败的回调函数
fail: function(res) {
}
})
},100)
},
微信登录
loginWeixin() {
console.log("垃圾安卓")
var that = this
var app = getApp({allowDefault: true})
setTimeout(function() {
uni.login({
provider: 'weixin', //provider String 登录服务提供商
success: function(res) {
var loginCode = res.code
that.loginCode = loginCode
uni.getUserInfo({ //获取用户信息
provider: 'weixin',
lang: "zh_CN",
success: function(userRes) {
// #ifdef MP-WEIXIN
//发起网络请求
util.ajax({
url: '/system/login.do',
data: {
code: loginCode,
encryptedData: userRes.encryptedData,
iv: userRes.iv,
wxheadpic: userRes.userInfo.avatarUrl
},
//服务端的回掉
success: function(result) {
uni.setStorage({
key: 'useruuid',
data: result.data.user.useruuid
})
app.globalData.provider = result.data.provider
app.globalData.user = result.data.user
console.log("用户已登录")
uni.navigateBack({
delta: 1
});
}
})
// #endif
// #ifdef APP-PLUS
console.log("微信登录")
let userInfo = JSON.stringify(userRes.userInfo)
console.log(userInfo)
util.ajax({
url: '/system/applogin.do',
data: {
"userInfo":userInfo,
},
//服务端的回掉
success: function(result) {
console.log(result)
let data = result.data
if(data.resultCode=="true"){
uni.setStorage({
key: 'useruuid',
data: result.data.user.useruuid
})
app.globalData.provider = result.data.provider
app.globalData.user = result.data.user
console.log("用户已登录")
uni.navigateBack({
delta: 1
});
}else if(data.resultCode=="nouser"){
userInfo = JSON.parse(userInfo)
//没有绑定账号的微信,需要注册
userInfo.plat = "weixin"
uni.setStorageSync("userInfo",userInfo)
uni.navigateTo({
url:"/pages/login/appregister"
})
}
},
complete:function(e){
console.log(e)
}
})
// #endif
},
//接口调用结束的回调函数(调用成功、失败都会执行)
complete: function(res) {
// console.log(res)
}
})
},
//接口调用失败的回调函数
fail: function(res) {
}
})
},100)
},
uni.share(OBJECT) 官网链接
uni-app的App引擎已经封装了微信、QQ、微博的分享SDK,开发者可以直接调用相关功能。
可以分享到微信、QQ、微博,每个社交平台被称为分享服务提供商,即provider。
可以分享文字、图片、图文横条、音乐、视频等多种形式。同时注意,分享为小程序也使用本API。即在App里可以通过本API把一个内容以小程序(通常为内容页)方式直接分享给微信好友。
注意:
仅支持分享微信小程序到微信聊天界面,想进入朋友圈需改为分享图片方式,在图片中包含小程序码。一般通过canvas绘制图片,插件市场有很多生成图片的插件。
小程序分享:
// 小程序分享
onShareAppMessage() {
return {
title: 'test',
path: 'pages/index/index'
}
}
只有定义了此事件处理函数,小程序右上角菜单才会显示“转发”按钮。
App分享:
首先要在 manfest.json中的 App模块权限配置 中,勾选上分享
然后在 AppSDK配置 中,设置分享模块,需要填写对应的信息。
<!-- #ifdef APP-PLUS -->
<button type="primary" @click="share">分享</button>
<!-- #endif -->
// 分享好友
share() {
// 分享图文到微信聊天界面
uni.share({
provider: "weixin", // 服务商
scene: "WXSceneSession", // 场景 微信好友WXSceneSession 朋友圈WXSceneTimeLine
type: 0, // 图文0 文字1 图片2
href: "http://uniapp.dcloud.io/", // 分享h5地址
title: "uni-app分享",
summary: "我正在使用HBuilderX开发uni-app,赶紧跟我一起来体验!", // 描述
imageUrl: "https://img-cdn-qiniu.dcloud.net.cn/uniapp/images/[email protected]",
success: function (res) {
console.log("success:" + JSON.stringify(res));
},
fail: function (err) {
console.log("fail:" + JSON.stringify(err));
}
});
}
分享图文:href、imageUrl 为必选参数,title/summary 二选一,最好将这四个参数都选上。
添加按钮:
uni.requestPayment(OBJECT) 官网链接
uni push 官网链接
voice 官网链接