小程序模板網(wǎng)

微信小程序沒有授權(quán)時(shí)的處理方法

發(fā)布時(shí)間:2018-05-04 16:03 所屬欄目:小程序開發(fā)教程

背景:微信小程序很多都需要用戶的微信授權(quán),可是很多瓜皮用戶會(huì)狠心拒絕,但是不管用戶怎么操作,我們必須讓用戶能夠更好的體驗(yàn)小程序。

過程:我把用戶的操作分四種。

1)用戶直接同意授權(quán)。 
2)用戶拒絕授權(quán),進(jìn)入引導(dǎo)彈窗,用戶繼續(xù)拒絕授權(quán)。 
3)用戶拒絕授權(quán),進(jìn)入引導(dǎo)彈窗,用戶點(diǎn)擊授權(quán),進(jìn)入授權(quán)設(shè)置頁(yè),用戶點(diǎn)擊授權(quán)。 
4)用戶拒絕授權(quán),進(jìn)入引導(dǎo)彈窗,用戶點(diǎn)擊授權(quán),進(jìn)入授權(quán)設(shè)置頁(yè),用戶不點(diǎn)擊授權(quán),直接退出。

解決方法:

 

				
  1. toMap() {
  2. let that = this;
  3. wx.getSetting({
  4. success(res) {
  5. if (!res.authSetting['scope.userLocation']) {//如果沒有授權(quán)
  6. wx.authorize({
  7. scope: 'scope.userLocation',
  8. success: res => {//第一種情況:用戶同意授權(quán)
  9. // 發(fā)送地圖
  10. that.toMapFin();
  11. }, fail: res => {//用戶點(diǎn)擊了取消授權(quán),引導(dǎo)其去授權(quán)
  12. wx.showModal({
  13. title: '提示',
  14. content: '定位需要您的微信授權(quán)才能使用哦~ 錯(cuò)過授權(quán)頁(yè)面的處理方法:刪除小程序->重新搜索五百?gòu)?qiáng)名片進(jìn)入->點(diǎn)擊授權(quán)按鈕',
  15. cancelText: "不授權(quán)",
  16. confirmText: "授權(quán)",
  17. confirmColor: "#a08250",
  18. success: function (res) {
  19. if (res.confirm) {
  20. // 這個(gè) API 是基礎(chǔ)庫(kù) 1.1.0 才有的,所以需要做兼容處理:
  21. if (wx.openSetting) {
  22. wx.openSetting({
  23. success: function (res) {//第三種情況:用戶拒絕授權(quán),進(jìn)入引導(dǎo)彈窗,用戶點(diǎn)擊授權(quán),進(jìn)入授權(quán)設(shè)置頁(yè),用戶點(diǎn)擊授權(quán)。
  24. that.toMapFin();
  25. }
  26. })
  27. } else {
  28. wx.showModal({
  29. title: '授權(quán)提示',
  30. content: '定位需要您的微信授權(quán)才能使用哦~ 錯(cuò)過授權(quán)頁(yè)面的處理方法:刪除小程序->重新搜索五百?gòu)?qiáng)名片進(jìn)入->點(diǎn)擊授權(quán)按鈕'
  31. })
  32. }
  33. } else if (res.cancel) {//第二種情況:用戶拒絕授權(quán),進(jìn)入引導(dǎo)彈窗,用戶繼續(xù)拒絕授權(quán)。
  34. wx.showModal({
  35. title: '提示',
  36. content: '定位失敗,錯(cuò)過授權(quán)頁(yè)面的處理方法:刪除小程序->重新搜索五百?gòu)?qiáng)名片進(jìn)入->點(diǎn)擊授權(quán)按鈕',
  37. showCancel: false,
  38. confirmColor: "#c00",
  39. success: function (res) {
  40. if (res.confirm) {
  41. console.log('用戶點(diǎn)擊確定')
  42. }
  43. }
  44. })
  45. }
  46. }
  47. })
  48. }
  49. })
  50. } else {//用戶原來已經(jīng)通過了授權(quán),不必重新調(diào)起授權(quán)界面。
  51. that.toMapFin();
  52. }
  53. }
  54. })
  55.  
  56. },
 

				
  1. toMapFin(){
  2. wx.chooseLocation({
  3. success: res => {
  4. console.log(res)
  5. let address = res.address + res.name;
  6. this.setData({
  7. "local.address": [address],
  8. "local.longitude": res.longitude,
  9. "local.latitude": res.latitude
  10. })
  11. },
  12. fail: res => { //第四種情況:用戶拒絕授權(quán),進(jìn)入引導(dǎo)彈窗,用戶點(diǎn)擊授權(quán),進(jìn)入授權(quán)設(shè)置頁(yè),用戶不點(diǎn)擊授權(quán),直接退出。
  13. wx.showModal({
  14. title: '提示',
  15. content: '定位失敗',
  16. showCancel: false,
  17. confirmColor: "#c00",
  18. success: function (res) { }
  19. })
  20. }
  21. })
  22. },

這樣做的話,每次用戶進(jìn)來都會(huì)查看他是否已經(jīng)授權(quán),如果不授權(quán)的話,都會(huì)調(diào)起授權(quán)提示。

如果是用戶點(diǎn)擊拒絕授權(quán)之后,以后每次進(jìn)來都再也不調(diào)起授權(quán)提示的話,這個(gè)方法就不適合了。

需要用到的方法:

wx:getSetting(獲取用戶的當(dāng)前設(shè)置。)

wx.authorize(提前向用戶發(fā)起授權(quán)請(qǐng)求。調(diào)用后會(huì)立刻彈窗詢問用戶是否同意授權(quán)小程序使用某項(xiàng)功能或獲取用戶的某些數(shù)據(jù),但不會(huì)實(shí)際調(diào)用對(duì)應(yīng)接口。如果用戶之前已經(jīng)同意授權(quán),則不會(huì)出現(xiàn)彈窗,直接返回成功。)

wx.openSetting(調(diào)起客戶端小程序設(shè)置界面,返回用戶設(shè)置的操作結(jié)果。)



易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉(cāng)庫(kù):starfork
本文地址:http://m.u-renovate.com/wxmini/doc/course/24236.html 復(fù)制鏈接 如需定制請(qǐng)聯(lián)系易優(yōu)客服咨詢:800182392 點(diǎn)擊咨詢
QQ在線咨詢
AI智能客服 ×