authorize.js 3.5 KB

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