新增在线授权

master
李春波 2 years ago
parent b754bb7045
commit ff2a91b704
  1. 10
      app/admin/controller/MiniProgramController.php
  2. 11
      app/common/service/wechat/OpenPlatform.php
  3. 6
      app/wechat/controller/IndexController.php
  4. 2
      config/route.php
  5. 11
      front/src/api/miniprogram.js
  6. 66
      front/src/views/authorizer/authorizerList.vue

@ -4,6 +4,7 @@ namespace app\admin\controller;
use app\admin\model\Authorizers;
use app\common\service\wechat\MiniProgram;
use app\common\service\wechat\OpenPlatform;
use support\Request;
class MiniProgramController extends BaseController
@ -101,4 +102,13 @@ class MiniProgramController extends BaseController
}
return json(['code' => $result['errcode'], 'msg' => $result['errmsg']]);
}
public function getPcAuthorizerUrl(Request $request)
{
$id = $request->post('id');
$open_platform = new OpenPlatform($id);
$data = $open_platform->getPcAuthorizerUrl();
return success($data);
}
}

@ -160,4 +160,15 @@ class OpenPlatform extends BaseServices {
];
WxcallbackBiz::create($row);
}
public function getPcAuthorizerUrl()
{
$pre_code = $this->app->createPreAuthorizationCode();
$pc_url = $this->app->getPreAuthorizationUrl('https://f9e5-117-154-106-86.ngrok-free.app/callback', $pre_code);
$mobile_url = $this->app->getMobilePreAuthorizationUrl('https://f9e5-117-154-106-86.ngrok-free.app/callback', $pre_code);
return [
'pc_url' => route('wechat.authorizer', ['url' => urlencode($pc_url)]),
'mobile_url' => route('wechat.authorizer', ['url' => urlencode($mobile_url)]),
];
}
}

@ -28,4 +28,10 @@ class IndexController
}
}
public function authorizer(Request $request, $url = '')
{
$url = urldecode($url);
return "<a href='$url' target='_blank'>点击授权</a>";
}
}

@ -14,6 +14,8 @@
use Webman\Route;
// 发起微信授权
Route::any('/wechat/authorizer/{url}', [app\wechat\controller\IndexController::class, 'authorizer'])->name('wechat.authorizer');
// 微信授权事件、消息与事件通知回调
Route::any('/wechat[/{appid}]', [app\wechat\controller\IndexController::class, 'index']);

@ -10,6 +10,7 @@ const api = {
release: '/miniprogram/release',
RevertCodeRelease: '/miniprogram/revertCodeRelease',
SetDomain: '/miniprogram/setDomain',
getPcAuthorizerUrl: '/miniprogram/getPcAuthorizerUrl',
}
export function getDetail(parameter) {
@ -82,4 +83,12 @@ export function setDomain(parameter) {
method: 'post',
data: parameter
})
}
}
export function getPcAuthorizerUrl(parameter) {
return request({
url: api.getPcAuthorizerUrl,
method: 'post',
data: parameter
})
}

@ -30,7 +30,8 @@
</div>
<div class="table-operator">
<a-button :disabled="refreshButton" icon="plus" type="primary" @click="refresh">刷新</a-button>
<a-button :disabled="refreshButton" icon="sync" type="primary" @click="refresh">刷新</a-button>
<a-button icon="plus" type="primary" @click="addAuthorizer">新增授权</a-button>
</div>
<s-table
@ -89,6 +90,38 @@
expanded
></json-viewer>
</a-modal>
<a-modal
:footer="null"
:visible="addAuthorizerVisible"
title="新增授权"
width="600px"
@cancel="() => addAuthorizerVisible = false"
>
<a-card :loading="addAuthorizerLoading">
<a-row>
<a-col :span="8">
PC 版授权链接
</a-col>
<a-col :span="8">
在电脑浏览器里打开后使用微信扫码
</a-col>
<a-col :span="8" style="text-align: center">
<a target="_blank" @click="onCopy(pcAuthorizerUrl)">复制链接</a>
</a-col>
</a-row>
<a-row>
<a-col :span="8">
H5 版授权链接
</a-col>
<a-col :span="8">
在手机微信里直接访问授权链接
</a-col>
<a-col :span="8" style="text-align: center">
<a target="_blank" @click="onCopy(mobileAuthorizerUrl)">复制链接</a>
</a-col>
</a-row>
</a-card>
</a-modal>
</page-header-wrapper>
</template>
@ -96,7 +129,8 @@
import data from "@/config/data";
import {Ellipsis, STable} from '@/components'
import {getAuthorizer, getRefreshToken, getToken, originalMessage, refresh} from '@/api/authorizer'
import Message from "ant-design-vue/lib/message";
import {getPcAuthorizerUrl} from '@/api/miniprogram'
import Message from "ant-design-vue/lib/message"
import JsonViewer from 'vue-json-viewer'
import {mapState} from "vuex";
@ -211,6 +245,11 @@ export default {
//
refreshButton: false,
jsonDataVisible: false,
//
addAuthorizerVisible: false,
addAuthorizerLoading: false,
pcAuthorizerUrl: null,
mobileAuthorizerUrl: null,
}
},
created() {
@ -287,7 +326,28 @@ export default {
id: id
}
})
}
},
addAuthorizer() {
this.addAuthorizerLoading = true
this.addAuthorizerVisible = true
getPcAuthorizerUrl({id: this.currentPlatform.id}).then(res => {
this.pcAuthorizerUrl = res.data['pc_url']
this.mobileAuthorizerUrl = res.data['mobile_url']
}).finally(() => {
this.addAuthorizerLoading = false
})
},
onCopy(text) {
navigator.clipboard.writeText(window.location.origin + text)
.then(() => {
Message.success('复制成功,发送给用户打开完成授权')
})
.catch((error) => {
Message.error('复制失败' + error)
});
},
}
}
</script>

Loading…
Cancel
Save