authorize.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. //authorize.js
  2. import api from './caimeiApi.js'
  3. //判断是否登陆 通过检测sessionkey是否过期 1未过期 0已过期
  4. const checkSessionKey=()=>{
  5. return new Promise((resolve,reject) => {
  6. const user = uni.getStorageSync('user')// 用户缓存信息
  7. if(user){
  8. uni.checkSession({
  9. success() {
  10. resolve(1) //状态未过期
  11. }
  12. ,fail() {
  13. resolve(0) //状态已过期
  14. }
  15. })
  16. }else{
  17. resolve(2) //未存贮
  18. }
  19. })
  20. }
  21. // 登录授权
  22. const login = (params)=> {
  23. return new Promise((resolve,reject) => {
  24. authDo(params).then(res=>{
  25. if ( res.statusCode && res.statusCode != 200 ) {
  26. reject('网络错误,请检查一下网络');return
  27. }
  28. if (res.data.code != 0) {
  29. reject('登录失败');return
  30. }
  31. let user = res.data.data.user
  32. uni.setStorageSync('user', user)//储存用户信息到本地
  33. resolve(user)
  34. })
  35. })
  36. }
  37. // 查询用户信息 write by self
  38. const authDo = function(params) {
  39. return new Promise(function (resolve, reject) {
  40. uni.request({
  41. url: api.requestUrl +'/login/doLogin',
  42. data: params,
  43. method:'POST',
  44. header: {
  45. 'content-type': 'application/x-www-form-urlencoded'
  46. },
  47. success: function(res){ resolve(res) },
  48. fail:function(){ reject('保存用户信息失败') }
  49. })
  50. })
  51. }
  52. // 获取服务商信息 uni-app是聚合开发 所以先获得是什么小程序 原生的不用这个
  53. const getProvider = () => {
  54. return new Promise((resolve, reject) => {
  55. uni.getProvider({
  56. service: 'oauth', //服务类型 登录授权
  57. success: function(res) {resolve(res.provider[0])},
  58. fail:function() { reject('获取服务商失败') }
  59. })
  60. })
  61. }
  62. // 获取code
  63. const getCode = provider => {
  64. return new Promise((resolve, reject) => {
  65. if (!provider) { reject('获取缺少provider参数') }
  66. uni.login({
  67. provider: provider,
  68. success: function(loginRes) {
  69. if (loginRes && loginRes.code) {
  70. resolve(loginRes.code)
  71. } else {
  72. reject('获取code失败')
  73. uni.navigateTo({
  74. url:'/pages/tabBar/home/index'
  75. })
  76. }
  77. },
  78. fail:function(error){
  79. console.log('获取code失败',)
  80. reject('获取code失败')
  81. }
  82. })
  83. })
  84. }
  85. // 是否开启了获取用户名授权 当用户一开始拒绝了 需再次提醒授权
  86. const getSetting = function() {
  87. return new Promise((resolve,reject) => {
  88. uni.getSetting({
  89. success:function(res) {
  90. let authSetting=res.authSetting
  91. if(authSetting['scope.userInfo']){resolve(1);return}//授权成功
  92. if(authSetting['scope.userInfo']===false){resolve(0);return}//拒绝授权
  93. resolve(2) //2未操作
  94. },
  95. fail:function(error) {
  96. console.log(error)
  97. reject('获取用户授权失败')
  98. }
  99. })
  100. })
  101. }
  102. // 获取用户信息
  103. const getUserInfo = (provider)=>{
  104. return new Promise( (resolve,reject)=>{
  105. if (!provider) { reject('获取缺少provider参数');return }
  106. uni.getUserInfo({
  107. provider: provider,
  108. success: (detail) => {
  109. if(detail.iv != ''){
  110. resolve(detail)
  111. }else{
  112. reject(0) //用户点击拒绝授权
  113. }
  114. }
  115. ,fail: (error) => {
  116. console.log('获取用户信息失败',error)
  117. reject(0) //如果用户拒绝过授权 直接走fail
  118. }
  119. })
  120. })
  121. }
  122. // 获取用户登录状态
  123. const checkLogin = () => {
  124. return new Promise((resolve, reject) => {
  125. uni.checkSession({
  126. success() {
  127. console.log('登录成功')
  128. resolve(1)
  129. },
  130. fail(error) {
  131. console.log('获取用户信息失败',error)
  132. reject(0)
  133. }
  134. })
  135. })
  136. }
  137. // util.js
  138. const getUserProfile = () =>{
  139. wx.getUserProfile({
  140. desc: '用于完善个人资料',
  141. success: function(res) {
  142. var userInfo = res.userInfo
  143. // console.log('userInfo==>', userInfo)
  144. wx.setStorageSync('storage_info', 1)//本地标记
  145. //下面将userInfo存入服务器中的用户个人资料
  146. //...
  147. },
  148. fail() {
  149. console.log('用户拒绝授权')
  150. }
  151. })
  152. }
  153. export default {
  154. getProvider,
  155. getSetting,
  156. checkSessionKey,
  157. getCode,
  158. login,
  159. getUserInfo,
  160. checkLogin,
  161. getUserProfile
  162. }