authorize.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  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. console.log(loginRes)
  70. if (loginRes && loginRes.code) {
  71. resolve(loginRes.code)
  72. } else {
  73. reject("获取code失败")
  74. uni.navigateTo({
  75. url:'/pages/tabBar/home/index'
  76. })
  77. }
  78. },
  79. fail:function(error){
  80. console.log(err)
  81. reject("获取code失败")
  82. }
  83. });
  84. })
  85. }
  86. // 是否开启了获取用户名授权 当用户一开始拒绝了 需再次提醒授权
  87. const getSetting = function() {
  88. return new Promise((resolve,reject) => {
  89. uni.getSetting({
  90. success:function(res) {
  91. let authSetting=res.authSetting
  92. if(authSetting['scope.userInfo']){resolve(1);return;}//授权成功
  93. if(authSetting['scope.userInfo']===false){resolve(0);return;}//拒绝授权
  94. resolve(2) //2未操作
  95. },
  96. fail:function(error) {
  97. console.log(error)
  98. reject("获取用户授权失败")
  99. }
  100. })
  101. })
  102. }
  103. // 获取用户信息
  104. const getUserInfo = (provider)=>{
  105. return new Promise( (resolve,reject)=>{
  106. if (!provider) { reject("获取缺少provider参数");return; }
  107. uni.getUserInfo({
  108. provider: provider,
  109. success: (detail) => {
  110. if(detail.iv != ''){
  111. resolve(detail);
  112. }else{
  113. reject(0); //用户点击拒绝授权
  114. }
  115. }
  116. ,fail: (error) => {
  117. reject(0); //如果用户拒绝过授权 直接走fail
  118. }
  119. });
  120. })
  121. }
  122. export default {getProvider,getSetting,checkSessionKey,getCode,login,getUserInfo}