authorize.js 4.6 KB

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