authorize.js 3.3 KB

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