uniapp API 第三方服务

uniapp API 第三方服务

        • 获取服务供应商
        • 登录
        • 分享
        • 支付
        • 推送
        • 语音

获取服务供应商

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 官网链接

你可能感兴趣的:(UniApp,javascript)