顾绍兵皮带罩衣腰包头巾雨衣 發表於 2021-4-27 12:02:00

uni-app:授权(以微信小程序为例)

<h1>说明</h1>
<h2>个人使用环境说明</h2>
<ul>
<li>设备环境:win10 64bit</li>
<li>编译环境:HBuilder X</li>
<li>运行环境 :微信开发者工具、真机</li>
</ul>
<h2>其他说明</h2>
<ul>
<li>在微信小程序中,在调试模式、开发者模式中,调用用户信息默认失败。发布后,可以根据实际用户授权返回授权的结果。</li>
<li>由于如果用户之前拒绝过授权,此接口会直接调用师表回调。一般搭配<code>uni.getSetting(</code><code>获取当前用户授权)</code>和<code>uni.openSetting</code><code>(打开授权)</code>使用。</li>
<li>APP的授权判断方式见https://ext.dcloud.net.cn/plugin?id=594。</li>
<li>地理位置权限需要在manifest.json 配置 permission,详见https://uniapp.dcloud.io/collocation/manifest。</li>
<li>本人在测试该接口时,引用了ColorUI的样式</li>
</ul>
<h1>调用</h1>
<h2>调用方法</h2>
<p>uni.authorize(OBJECT)</p>
<h2>功能</h2>
<p>提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。如果用户之前拒绝了授权,此接口会直接进入失败回调,一般搭配uni.getSetting和uni.openSetting使用。</p>
<h2>平台差异</h2>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="79">
<p align="center"><strong>App</strong></p>
</td>
<td valign="top" width="79">
<p align="center"><strong>H5</strong></p>
</td>
<td valign="top" width="79">
<p align="center"><strong>微信小程序</strong></p>
</td>
<td valign="top" width="79">
<p align="center"><strong>支付宝小程序</strong></p>
</td>
<td valign="top" width="79">
<p align="center"><strong>百度小程序</strong></p>
</td>
<td style="width: 100px" valign="top">
<p align="center"><strong>字节跳动小程序</strong></p>
</td>
<td valign="top" width="79">
<p align="center"><strong>QQ小程序</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="79">
<p align="center"><strong>×</strong></p>
</td>
<td valign="top" width="79">
<p align="center">×</p>
</td>
<td valign="top" width="79">
<p align="center">√</p>
</td>
<td valign="top" width="79">
<p align="center">×</p>
</td>
<td valign="top" width="79">
<p align="center">√</p>
</td>
<td valign="top" width="79">
<p align="center">√</p>
</td>
<td valign="top" width="79">
<p align="center">√</p>
</td>
</tr>
</tbody>
</table>
<h2>Object参数</h2>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="138">
<p align="center"><strong>参数</strong></p>
</td>
<td valign="top" width="138">
<p align="center"><strong>类型</strong></p>
</td>
<td valign="top" width="138">
<p align="center"><strong>必填</strong></p>
</td>
<td style="width: 200px" valign="top">
<p align="center"><strong>说明</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="138">
<p align="center"><strong>scope</strong></p>
</td>
<td valign="top" width="138">
<p align="center">String</p>
</td>
<td valign="top" width="138">
<p align="center">是</p>
</td>
<td valign="top" width="138">
<p align="center">需要获取权限的 scope,详见 scope 列表。</p>
</td>
</tr>
<tr>
<td valign="top" width="138">
<p align="center"><strong>success</strong></p>
</td>
<td valign="top" width="138">
<p align="center">Function</p>
</td>
<td valign="top" width="138">
<p align="center">否</p>
</td>
<td valign="top" width="138">
<p align="center">接口调用成功的回调函数</p>
</td>
</tr>
<tr>
<td valign="top" width="138">
<p align="center"><strong>fail</strong></p>
</td>
<td valign="top" width="138">
<p align="center">Function</p>
</td>
<td valign="top" width="138">
<p align="center">否</p>
</td>
<td valign="top" width="138">
<p align="center">接口调用失败的回调函数</p>
</td>
</tr>
<tr>
<td valign="top" width="138">
<p align="center"><strong>complete</strong></p>
</td>
<td valign="top" width="138">
<p align="center">Function</p>
</td>
<td valign="top" width="138">
<p align="center">否</p>
</td>
<td valign="top" width="138">
<p align="center">接口调用结束的回调函数(调用成功、失败都会执行)</p>
</td>
</tr>
</tbody>
</table>
<h3>scope列表</h3>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="138">
<p align="center"><strong>scope</strong></p>
</td>
<td valign="top" width="138">
<p align="center"><strong>对应接口</strong></p>
</td>
<td valign="top" width="138">
<p align="center"><strong>描述</strong></p>
</td>
<td valign="top" width="138">
<p align="center"><strong>地理位置</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="138">
<p align="center"><strong>scope.userInfo</strong></p>
</td>
<td valign="top" width="138">
<p align="center">uni.getUserInfo</p>
</td>
<td valign="top" width="138">
<p align="center">用户信息</p>
</td>
<td valign="top" width="138">
<p align="center">&nbsp;</p>
</td>
</tr>
<tr>
<td valign="top" width="138">
<p align="center"><strong>scope.userLocation</strong></p>
</td>
<td valign="top" width="138">
<p align="center">uni.getLocation, uni.chooseLocation</p>
</td>
<td valign="top" width="138">
<p align="center">地理位置</p>
</td>
<td valign="top" width="138">
<p align="center">&nbsp;</p>
</td>
</tr>
<tr>
<td valign="top" width="138">
<p align="center"><strong>scope.userLocationBackground</strong></p>
</td>
<td valign="top" width="138">
<p align="center">wx.userLocationBackground</p>
</td>
<td valign="top" width="138">
<p align="center">后台定位</p>
</td>
<td valign="top" width="138">
<p align="center">微信小程序</p>
</td>
</tr>
<tr>
<td valign="top" width="138">
<p align="center"><strong>scope.address</strong></p>
</td>
<td valign="top" width="138">
<p align="center">uni.chooseAddress</p>
</td>
<td valign="top" width="138">
<p align="center">通信地址</p>
</td>
<td valign="top" width="138">
<p align="center">&nbsp;</p>
</td>
</tr>
<tr>
<td valign="top" width="138">
<p align="center"><strong>scope.record</strong></p>
</td>
<td valign="top" width="138">
<p align="center">uni.getRecorderManager</p>
</td>
<td valign="top" width="138">
<p align="center">录音功能</p>
</td>
<td valign="top" width="138">
<p align="center">&nbsp;</p>
</td>
</tr>
<tr>
<td valign="top" width="138">
<p align="center"><strong>scope.writePhotosAlbum</strong></p>
</td>
<td valign="top" width="138">
<p align="center">uni.saveImageToPhotosAlbum, uni.saveVideoToPhotosAlbum</p>
</td>
<td valign="top" width="138">
<p align="center">保存到相册</p>
</td>
<td valign="top" width="138">
<p align="center">字节跳动小程序的返回值是scope.album</p>
</td>
</tr>
<tr>
<td valign="top" width="138">
<p align="center"><strong>scope.camera</strong></p>
</td>
<td valign="top" width="138">
<p align="center">&lt;camera /&gt; 组件,头条下的扫码、拍照、选择相册</p>
</td>
<td valign="top" width="138">
<p align="center">摄像头</p>
</td>
<td valign="top" width="138">
<p align="center">&nbsp;</p>
</td>
</tr>
<tr>
<td valign="top" width="138">
<p align="center"><strong>scope.invoice</strong></p>
</td>
<td valign="top" width="138">
<p align="center">wx.chooseInvoice</p>
</td>
<td valign="top" width="138">
<p align="center">获取发票</p>
</td>
<td valign="top" width="138">
<p align="center">微信小程序、QQ小程序</p>
</td>
</tr>
<tr>
<td valign="top" width="138">
<p align="center"><strong>scope.invoiceTitle</strong></p>
</td>
<td valign="top" width="138">
<p align="center">uni.chooseInvoiceTitle</p>
</td>
<td valign="top" width="138">
<p align="center">发票抬头</p>
</td>
<td valign="top" width="138">
<p align="center">微信小程序、百度小程序、QQ小程序</p>
</td>
</tr>
<tr>
<td valign="top" width="138">
<p align="center"><strong>scope.werun</strong></p>
</td>
<td valign="top" width="138">
<p align="center">wx.getWeRunData</p>
</td>
<td valign="top" width="138">
<p align="center">微信运动步数</p>
</td>
<td valign="top" width="138">
<p align="center">微信小程序</p>
</td>
</tr>
</tbody>
</table>
<h2>示例代码</h2>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">uni.authorize({
</span><span style="color: rgba(0, 128, 128, 1)">2</span>   scope: 'scope.userLocation'<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 0, 0, 1)">    success() {
</span><span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(0, 0, 0, 1)">      uni.getLocation()
</span><span style="color: rgba(0, 128, 128, 1)">5</span> <span style="color: rgba(0, 0, 0, 1)">    }
</span><span style="color: rgba(0, 128, 128, 1)">6</span> })</pre>
</div>
<h1>&nbsp;个人代码</h1>
<h2>打开授权设置页</h2>
<p>授权获取失败时,根据用户选择,打开授权设置页。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 打开授权设置页 : authouName: 授权名称</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 0, 1)">openSetting(authouName) {
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)">    uni.showModal({
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span>         title: '授权'<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span>         content: '获取授权' + authouName + '失败,是否前往授权设置?'<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span>         success: <span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(result) {
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span>             <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (result.confirm) {
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)">                uni.openSetting();
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)">      },
</span><span style="color: rgba(0, 128, 128, 1)">11</span>         fail: <span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">() {
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)">            uni.showToast({
</span><span style="color: rgba(0, 128, 128, 1)">13</span>               title: '系统错误!'<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">14</span>               icon: 'none'
<span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)">            });
</span><span style="color: rgba(0, 128, 128, 1)">16</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">17</span> <span style="color: rgba(0, 0, 0, 1)">    })
</span><span style="color: rgba(0, 128, 128, 1)">18</span> }</pre>
</div>
<h2>&nbsp;配置授权</h2>
<p>由于申请位置接口,需要在maifest.json在小程序特有相关中配置权限。以微信小程序为列,使用HBuilder X 打开项目的配置文件。点击【微信小程序配置】→微信小程序权限的【位置】接口,并填写权限申请原因。</p>
<p><img src="data:image/png;base64,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"></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 小程序特有相关 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> "mp-weixin"<span style="color: rgba(0, 0, 0, 1)">: {
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span>   "appid": "小程序appid"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span>   "setting"<span style="color: rgba(0, 0, 0, 1)">: {
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span>         "urlCheck": <span style="color: rgba(0, 0, 255, 1)">false</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)">    },
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span>   "usingComponents": <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span>   "permission"<span style="color: rgba(0, 0, 0, 1)">: {
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span>         "scope.userLocation"<span style="color: rgba(0, 0, 0, 1)">: {
</span><span style="color: rgba(0, 128, 128, 1)">10</span>             "desc": "小程序位置接口的效果展示"
<span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)">    }
</span><span style="color: rgba(0, 128, 128, 1)">13</span> },</pre>
</div>
<h2>&nbsp;页面代码</h2>
<p>authorize.vue页面代码如下:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> &lt;template&gt;
<span style="color: rgba(0, 128, 128, 1)">2</span>   &lt;view class="padding flex flex-direction bg-white"&gt;
<span style="color: rgba(0, 128, 128, 1)">3</span>         &lt;!-- 授权设置页 --&gt;
<span style="color: rgba(0, 128, 128, 1)">4</span>         &lt;!-- #ifdef MP-WEIXIN || MP-BAIDU --&gt;
<span style="color: rgba(0, 128, 128, 1)">5</span>         &lt;button class="cu-btn bg-orange margin-xs" open-type="openSetting"&gt;授权设置页&lt;/button&gt;
<span style="color: rgba(0, 128, 128, 1)">6</span>         &lt;!-- #endif --&gt;
<span style="color: rgba(0, 128, 128, 1)">7</span>         
<span style="color: rgba(0, 128, 128, 1)">8</span>         &lt;button class="cu-btn bg-orange light margin-bottom-xs" @click="aUserInfo"&gt;用户信息&lt;/button&gt;
<span style="color: rgba(0, 128, 128, 1)">9</span>         &lt;button class="cu-btn bg-orange light margin-bottom-xs" @click="aLocation"&gt;地理位置&lt;/button&gt;
<span style="color: rgba(0, 128, 128, 1)"> 10</span>         &lt;!-- #ifdef MP-WEIXIN --&gt;
<span style="color: rgba(0, 128, 128, 1)"> 11</span>         &lt;button class="cu-btn bg-orange light margin-bottom-xs" @click="aLocationBackground"&gt;后台定位&lt;/button&gt;
<span style="color: rgba(0, 128, 128, 1)"> 12</span>         &lt;!-- #endif --&gt;
<span style="color: rgba(0, 128, 128, 1)"> 13</span>         &lt;button class="cu-btn bg-orange light margin-bottom-xs" @click="aAddress"&gt;通信地址&lt;/button&gt;
<span style="color: rgba(0, 128, 128, 1)"> 14</span>         &lt;button class="cu-btn bg-orange light margin-bottom-xs" @click="aRecord"&gt;录音功能&lt;/button&gt;
<span style="color: rgba(0, 128, 128, 1)"> 15</span>         &lt;button class="cu-btn bg-orange light margin-bottom-xs" @click="aWritePhotosAlbum"&gt;保存到相册&lt;/button&gt;
<span style="color: rgba(0, 128, 128, 1)"> 16</span>         &lt;button class="cu-btn bg-orange light margin-bottom-xs" @click="aCamera"&gt;摄像头&lt;/button&gt;
<span style="color: rgba(0, 128, 128, 1)"> 17</span>         &lt;!-- #ifdef MP-WEIXIN || MP-QQ --&gt;
<span style="color: rgba(0, 128, 128, 1)"> 18</span>         &lt;button class="cu-btn bg-orange light margin-bottom-xs" @click="aInvoice"&gt;获取发票&lt;/button&gt;
<span style="color: rgba(0, 128, 128, 1)"> 19</span>         &lt;!-- #endif --&gt;
<span style="color: rgba(0, 128, 128, 1)"> 20</span>         &lt;!-- #ifdef MP-WEIXIN || MP-BAIDU || MP-QQ --&gt;
<span style="color: rgba(0, 128, 128, 1)"> 21</span>         &lt;button class="cu-btn bg-orange light margin-bottom-xs" @click="aInvoiceTitle"&gt;发票抬头&lt;/button&gt;
<span style="color: rgba(0, 128, 128, 1)"> 22</span>         &lt;!-- #endif --&gt;
<span style="color: rgba(0, 128, 128, 1)"> 23</span>         &lt;!-- #ifdef MP-WEIXIN --&gt;
<span style="color: rgba(0, 128, 128, 1)"> 24</span>         &lt;button class="cu-btn bg-orange light margin-bottom-xs" @click="aWerun"&gt;微信步数&lt;/button&gt;
<span style="color: rgba(0, 128, 128, 1)"> 25</span>         &lt;!-- #endif --&gt;
<span style="color: rgba(0, 128, 128, 1)"> 26</span>   &lt;/view&gt;
<span style="color: rgba(0, 128, 128, 1)"> 27</span> &lt;/template&gt;
<span style="color: rgba(0, 128, 128, 1)"> 28</span>
<span style="color: rgba(0, 128, 128, 1)"> 29</span> &lt;script&gt;
<span style="color: rgba(0, 128, 128, 1)"> 30</span>   <span style="color: rgba(0, 0, 255, 1)">var</span><span style="color: rgba(0, 0, 0, 1)"> _self;
</span><span style="color: rgba(0, 128, 128, 1)"> 31</span>   
<span style="color: rgba(0, 128, 128, 1)"> 32</span>   export <span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 33</span> <span style="color: rgba(0, 0, 0, 1)">      data() {
</span><span style="color: rgba(0, 128, 128, 1)"> 34</span>             <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 35</span>               
<span style="color: rgba(0, 128, 128, 1)"> 36</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)"> 37</span> <span style="color: rgba(0, 0, 0, 1)">      },
</span><span style="color: rgba(0, 128, 128, 1)"> 38</span>         onLoad:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)"> 39</span>             _self = <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 40</span> <span style="color: rgba(0, 0, 0, 1)">      },
</span><span style="color: rgba(0, 128, 128, 1)"> 41</span> <span style="color: rgba(0, 0, 0, 1)">      methods: {
</span><span style="color: rgba(0, 128, 128, 1)"> 42</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">============================== 授权 ==========================================</span>
<span style="color: rgba(0, 128, 128, 1)"> 43</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 用户信息</span>
<span style="color: rgba(0, 128, 128, 1)"> 44</span> <span style="color: rgba(0, 0, 0, 1)">            aUserInfo(e){
</span><span style="color: rgba(0, 128, 128, 1)"> 45</span> <span style="color: rgba(0, 0, 0, 1)">                uni.authorize({
</span><span style="color: rgba(0, 128, 128, 1)"> 46</span>                     scope:'scope.userInfo'<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 47</span>                     success:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)"> 48</span>                         console.log("获取用户信息:成功"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 49</span> <span style="color: rgba(0, 0, 0, 1)">                  },
</span><span style="color: rgba(0, 128, 128, 1)"> 50</span>                     fail:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)"> 51</span>                         console.log("授权用户信息:失败"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 52</span>                         _self.openSetting("用户信息"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 53</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)"> 54</span> <span style="color: rgba(0, 0, 0, 1)">                });
</span><span style="color: rgba(0, 128, 128, 1)"> 55</span> <span style="color: rgba(0, 0, 0, 1)">            },
</span><span style="color: rgba(0, 128, 128, 1)"> 56</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地理位置</span>
<span style="color: rgba(0, 128, 128, 1)"> 57</span> <span style="color: rgba(0, 0, 0, 1)">            aLocation(e){
</span><span style="color: rgba(0, 128, 128, 1)"> 58</span> <span style="color: rgba(0, 0, 0, 1)">                uni.authorize({
</span><span style="color: rgba(0, 128, 128, 1)"> 59</span>                     scope:'scope.userLocation'<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 60</span>                     success:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)"> 61</span>                         console.log("授权地理位置:成功"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 62</span> <span style="color: rgba(0, 0, 0, 1)">                  },
</span><span style="color: rgba(0, 128, 128, 1)"> 63</span>                     fail:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)"> 64</span>                         console.log("授权地理位置:失败"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 65</span>                         _self.openSetting("地理位置"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 66</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)"> 67</span> <span style="color: rgba(0, 0, 0, 1)">                });
</span><span style="color: rgba(0, 128, 128, 1)"> 68</span> <span style="color: rgba(0, 0, 0, 1)">            },
</span><span style="color: rgba(0, 128, 128, 1)"> 69</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 后台定位 (微信小程序)</span>
<span style="color: rgba(0, 128, 128, 1)"> 70</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #ifdef MP-WEIXIN</span>
<span style="color: rgba(0, 128, 128, 1)"> 71</span> <span style="color: rgba(0, 0, 0, 1)">            aLocationBackground(){
</span><span style="color: rgba(0, 128, 128, 1)"> 72</span> <span style="color: rgba(0, 0, 0, 1)">                uni.authorize({
</span><span style="color: rgba(0, 128, 128, 1)"> 73</span>                     scope:'scope.userLocationBackground'<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 74</span>                     success:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)"> 75</span>                         console.log("授权后台定位:成功"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 76</span> <span style="color: rgba(0, 0, 0, 1)">                  },
</span><span style="color: rgba(0, 128, 128, 1)"> 77</span>                     fail:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)"> 78</span>                         console.log("授权后台定位:失败"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 79</span>                         _self.openSetting("后台定位"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 80</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)"> 81</span> <span style="color: rgba(0, 0, 0, 1)">                });
</span><span style="color: rgba(0, 128, 128, 1)"> 82</span> <span style="color: rgba(0, 0, 0, 1)">            },
</span><span style="color: rgba(0, 128, 128, 1)"> 83</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #endif</span>
<span style="color: rgba(0, 128, 128, 1)"> 84</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 通讯地址</span>
<span style="color: rgba(0, 128, 128, 1)"> 85</span> <span style="color: rgba(0, 0, 0, 1)">            aAddress(){
</span><span style="color: rgba(0, 128, 128, 1)"> 86</span> <span style="color: rgba(0, 0, 0, 1)">                uni.authorize({
</span><span style="color: rgba(0, 128, 128, 1)"> 87</span>                     scope:'scope.address'<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 88</span>                     success:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)"> 89</span>                         console.log("授权通讯地址:成功"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 90</span> <span style="color: rgba(0, 0, 0, 1)">                  },
</span><span style="color: rgba(0, 128, 128, 1)"> 91</span>                     fail:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)"> 92</span>                         console.log("授权通讯地址:失败"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 93</span>                         _self.openSetting("通讯地址"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 94</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)"> 95</span> <span style="color: rgba(0, 0, 0, 1)">                });
</span><span style="color: rgba(0, 128, 128, 1)"> 96</span> <span style="color: rgba(0, 0, 0, 1)">            },
</span><span style="color: rgba(0, 128, 128, 1)"> 97</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 录音功能</span>
<span style="color: rgba(0, 128, 128, 1)"> 98</span> <span style="color: rgba(0, 0, 0, 1)">            aRecord(){
</span><span style="color: rgba(0, 128, 128, 1)"> 99</span> <span style="color: rgba(0, 0, 0, 1)">                uni.authorize({
</span><span style="color: rgba(0, 128, 128, 1)">100</span>                     scope:'scope.record'<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">101</span>                     success:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)">102</span>                         console.log("授权录音功能:成功"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">103</span> <span style="color: rgba(0, 0, 0, 1)">                  },
</span><span style="color: rgba(0, 128, 128, 1)">104</span>                     fail:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)">105</span>                         console.log("授权录音功能:失败"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">106</span>                         _self.openSetting("录音功能"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">107</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">108</span> <span style="color: rgba(0, 0, 0, 1)">                });
</span><span style="color: rgba(0, 128, 128, 1)">109</span> <span style="color: rgba(0, 0, 0, 1)">            },
</span><span style="color: rgba(0, 128, 128, 1)">110</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 保存到相册(字节跳动返回值是scope.album)</span>
<span style="color: rgba(0, 128, 128, 1)">111</span> <span style="color: rgba(0, 0, 0, 1)">            aWritePhotosAlbum(){
</span><span style="color: rgba(0, 128, 128, 1)">112</span> <span style="color: rgba(0, 0, 0, 1)">                uni.authorize({
</span><span style="color: rgba(0, 128, 128, 1)">113</span>                     scope:'scope.writePhotosAlbum'<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">114</span>                     success:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)">115</span>                         console.log("保存到相册:成功"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">116</span> <span style="color: rgba(0, 0, 0, 1)">                  },
</span><span style="color: rgba(0, 128, 128, 1)">117</span>                     fail:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(e){
</span><span style="color: rgba(0, 128, 128, 1)">118</span>                         console.log("保存到相册:失败"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">119</span>                         _self.openSetting("保存到相册"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">120</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">121</span> <span style="color: rgba(0, 0, 0, 1)">                });
</span><span style="color: rgba(0, 128, 128, 1)">122</span> <span style="color: rgba(0, 0, 0, 1)">            },
</span><span style="color: rgba(0, 128, 128, 1)">123</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 摄像头</span>
<span style="color: rgba(0, 128, 128, 1)">124</span> <span style="color: rgba(0, 0, 0, 1)">            aCamera(){
</span><span style="color: rgba(0, 128, 128, 1)">125</span> <span style="color: rgba(0, 0, 0, 1)">                uni.authorize({
</span><span style="color: rgba(0, 128, 128, 1)">126</span>                     scope:'scope.camera'<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">127</span>                     success:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)">128</span>                         console.log("授权摄像头:成功"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">129</span> <span style="color: rgba(0, 0, 0, 1)">                  },
</span><span style="color: rgba(0, 128, 128, 1)">130</span>                     fail:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)">131</span>                         console.log("授权摄像头:失败"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">132</span>                         _self.openSetting("摄像头"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">133</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">134</span> <span style="color: rgba(0, 0, 0, 1)">                });
</span><span style="color: rgba(0, 128, 128, 1)">135</span> <span style="color: rgba(0, 0, 0, 1)">            },
</span><span style="color: rgba(0, 128, 128, 1)">136</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 获取发票(微信小程序、QQ小程序)</span>
<span style="color: rgba(0, 128, 128, 1)">137</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #ifdef MP-WEIXIN || MP-QQ</span>
<span style="color: rgba(0, 128, 128, 1)">138</span> <span style="color: rgba(0, 0, 0, 1)">            aInvoice(){
</span><span style="color: rgba(0, 128, 128, 1)">139</span> <span style="color: rgba(0, 0, 0, 1)">                uni.authorize({
</span><span style="color: rgba(0, 128, 128, 1)">140</span>                     scope:'scope.invoice'<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">141</span>                     success:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)">142</span>                         console.log("授权获取发票:成功"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">143</span> <span style="color: rgba(0, 0, 0, 1)">                  },
</span><span style="color: rgba(0, 128, 128, 1)">144</span>                     fail:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)">145</span>                         console.log("授权获取发票:失败"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">146</span>                         _self.openSetting("获取发票"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">147</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">148</span> <span style="color: rgba(0, 0, 0, 1)">                });
</span><span style="color: rgba(0, 128, 128, 1)">149</span> <span style="color: rgba(0, 0, 0, 1)">            },   
</span><span style="color: rgba(0, 128, 128, 1)">150</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #endif</span>
<span style="color: rgba(0, 128, 128, 1)">151</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 发票抬头(微信小程序、百度小程序、QQ小程序)</span>
<span style="color: rgba(0, 128, 128, 1)">152</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #ifdef MP-WEIXIN || MP-BAIDU || MP-QQ</span>
<span style="color: rgba(0, 128, 128, 1)">153</span> <span style="color: rgba(0, 0, 0, 1)">            aInvoiceTitle(){
</span><span style="color: rgba(0, 128, 128, 1)">154</span> <span style="color: rgba(0, 0, 0, 1)">                uni.authorize({
</span><span style="color: rgba(0, 128, 128, 1)">155</span>                     scope:'scope.invoiceTitle'<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">156</span>                     success:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)">157</span>                         console.log("授权获取发票抬头:成功"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">158</span> <span style="color: rgba(0, 0, 0, 1)">                  },
</span><span style="color: rgba(0, 128, 128, 1)">159</span>                     fail:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)">160</span>                         console.log("授权获取发票抬头:失败"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">161</span>                         _self.openSetting("发票抬头"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">162</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">163</span> <span style="color: rgba(0, 0, 0, 1)">                });
</span><span style="color: rgba(0, 128, 128, 1)">164</span> <span style="color: rgba(0, 0, 0, 1)">            },
</span><span style="color: rgba(0, 128, 128, 1)">165</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #endif</span>
<span style="color: rgba(0, 128, 128, 1)">166</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 微信步数(微信小程序)</span>
<span style="color: rgba(0, 128, 128, 1)">167</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #ifdef MP-WEIXIN</span>
<span style="color: rgba(0, 128, 128, 1)">168</span> <span style="color: rgba(0, 0, 0, 1)">            aWerun(){
</span><span style="color: rgba(0, 128, 128, 1)">169</span> <span style="color: rgba(0, 0, 0, 1)">                uni.authorize({
</span><span style="color: rgba(0, 128, 128, 1)">170</span>                     scope:'scope.werun'<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">171</span>                     success:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)">172</span>                         console.log("授权微信步数:成功"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">173</span> <span style="color: rgba(0, 0, 0, 1)">                  },
</span><span style="color: rgba(0, 128, 128, 1)">174</span>                     fail:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)">175</span>                         console.log("授权微信步数:失败"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">176</span>                         _self.openSetting("微信步数"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">177</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">178</span> <span style="color: rgba(0, 0, 0, 1)">                });
</span><span style="color: rgba(0, 128, 128, 1)">179</span> <span style="color: rgba(0, 0, 0, 1)">            },
</span><span style="color: rgba(0, 128, 128, 1)">180</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #endif</span>
<span style="color: rgba(0, 128, 128, 1)">181</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> ===================================== 方法 ===========================</span>
<span style="color: rgba(0, 128, 128, 1)">182</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 打开授权设置页 : authouName: 授权名称</span>
<span style="color: rgba(0, 128, 128, 1)">183</span> <span style="color: rgba(0, 0, 0, 1)">            openSetting(authouName){
</span><span style="color: rgba(0, 128, 128, 1)">184</span> <span style="color: rgba(0, 0, 0, 1)">                uni.showModal({
</span><span style="color: rgba(0, 128, 128, 1)">185</span>                     title:'授权'<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">186</span>                     content:'获取授权'+ authouName + '失败,是否前往授权设置?'<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">187</span>                     success:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(result){
</span><span style="color: rgba(0, 128, 128, 1)">188</span>                         <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)">(result.confirm){
</span><span style="color: rgba(0, 128, 128, 1)">189</span> <span style="color: rgba(0, 0, 0, 1)">                            uni.openSetting();
</span><span style="color: rgba(0, 128, 128, 1)">190</span> <span style="color: rgba(0, 0, 0, 1)">                        }
</span><span style="color: rgba(0, 128, 128, 1)">191</span> <span style="color: rgba(0, 0, 0, 1)">                  },
</span><span style="color: rgba(0, 128, 128, 1)">192</span>                     fail:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 128, 128, 1)">193</span> <span style="color: rgba(0, 0, 0, 1)">                        uni.showToast({
</span><span style="color: rgba(0, 128, 128, 1)">194</span>                           title:'系统错误!'<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">195</span>                           icon:'none'
<span style="color: rgba(0, 128, 128, 1)">196</span> <span style="color: rgba(0, 0, 0, 1)">                        });
</span><span style="color: rgba(0, 128, 128, 1)">197</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">198</span> <span style="color: rgba(0, 0, 0, 1)">                })
</span><span style="color: rgba(0, 128, 128, 1)">199</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">200</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">201</span> <span style="color: rgba(0, 0, 0, 1)">    }
</span><span style="color: rgba(0, 128, 128, 1)">202</span> &lt;/script&gt;
<span style="color: rgba(0, 128, 128, 1)">203</span>
<span style="color: rgba(0, 128, 128, 1)">204</span> &lt;style&gt;
<span style="color: rgba(0, 128, 128, 1)">205</span>
<span style="color: rgba(0, 128, 128, 1)">206</span> &lt;/style&gt;</pre>
</div>
<h1>参考网址</h1>
<p>uni-app官网授权:https://uniapp.dcloud.io/api/other/authorize</p>
<p>uni-app 官网配置:https://uniapp.dcloud.io/collocation/manifest?id=mp-weixin</p>
<p>微信小程序权限配置:https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html#permission</p>

</div>
<div id="MySignature" role="contentinfo">
    有志者,事竟成,破釜沉舟,百二秦关终属楚; 苦心人,天不负,卧薪尝胆,三千越甲可吞吴。<br><br>
来源:https://www.cnblogs.com/luyj00436/p/14708343.html
頁: [1]
查看完整版本: uni-app:授权(以微信小程序为例)