mirror of
https://gitee.com/zoujingli/ThinkAdmin.git
synced 2025-04-06 03:58:04 +08:00
[更新]修改网页授权
This commit is contained in:
parent
7414e8e874
commit
c1258140b6
@ -112,44 +112,41 @@ class WechatService
|
|||||||
*/
|
*/
|
||||||
public static function webOauth($fullMode = 0)
|
public static function webOauth($fullMode = 0)
|
||||||
{
|
{
|
||||||
$appid = self::getAppid();
|
list($appid, $request) = [self::getAppid(), app('request')];
|
||||||
list($openid, $fansinfo) = [session("{$appid}_openid"), session("{$appid}_fansinfo")];
|
list($openid, $fansinfo) = [session("{$appid}_openid"), session("{$appid}_fansinfo")];
|
||||||
if ((empty($fullMode) && !empty($openid)) || (!empty($fullMode) && !empty($fansinfo))) {
|
if ((empty($fullMode) && !empty($openid)) || (!empty($fullMode) && !empty($fansinfo))) {
|
||||||
empty($fansinfo) || FansService::set($fansinfo);
|
|
||||||
return ['openid' => $openid, 'fansinfo' => $fansinfo];
|
return ['openid' => $openid, 'fansinfo' => $fansinfo];
|
||||||
}
|
}
|
||||||
switch (strtolower(sysconf('wechat_type'))) {
|
switch (strtolower(sysconf('wechat_type'))) {
|
||||||
case 'api':
|
case 'api':
|
||||||
$wechat = self::oauth();
|
$wechat = self::oauth();
|
||||||
if (request()->get('state') !== $appid) {
|
if ($request->get('state') !== $appid) {
|
||||||
$baseUrl = request()->url(true);
|
$selfUrl = $request->url(true);
|
||||||
$snsapi = empty($fullMode) ? 'snsapi_base' : 'snsapi_userinfo';
|
$typeSns = empty($fullMode) ? 'snsapi_base' : 'snsapi_userinfo';
|
||||||
$param = (strpos($baseUrl, '?') !== false ? '&' : '?') . 'rcode=' . encode($baseUrl);
|
$params = (strpos($selfUrl, '?') === false ? '?' : '&') . 'rcode=' . encode($selfUrl);
|
||||||
$OauthUrl = $wechat->getOauthRedirect($baseUrl . $param, $appid, $snsapi);
|
redirect($wechat->getOauthRedirect($selfUrl . $params, $appid, $typeSns), [], 301)->send();
|
||||||
redirect($OauthUrl, [], 301)->send();
|
|
||||||
}
|
}
|
||||||
$token = $wechat->getOauthAccessToken();
|
$token = $wechat->getOauthAccessToken();
|
||||||
if (isset($token['openid'])) {
|
session("{$appid}_openid", empty($token['openid']) ? null : $token['openid']);
|
||||||
session("{$appid}_openid", $openid = $token['openid']);
|
if (!empty($fullMode) && !empty($token['openid']) && !empty($token['access_token'])) {
|
||||||
if (empty($fullMode) && request()->get('rcode')) {
|
$fansinfo = $wechat->getUserInfo($token['access_token'], $token['openid']);
|
||||||
redirect(decode(request()->get('rcode')))->send();
|
session("{$appid}_fansinfo", empty($fansinfo) ? null : $fansinfo);
|
||||||
}
|
|
||||||
session("{$appid}_fansinfo", $fansinfo = $wechat->getUserInfo($token['access_token'], $openid));
|
|
||||||
empty($fansinfo) || FansService::set($fansinfo);
|
empty($fansinfo) || FansService::set($fansinfo);
|
||||||
}
|
}
|
||||||
redirect(decode(request()->get('rcode')))->send();
|
if (($rcode = $request->get('rcode', false))) {
|
||||||
break;
|
redirect(decode($rcode))->send();
|
||||||
|
}
|
||||||
|
throw new Exception('网页授权异常,请稍候再试!', '503');
|
||||||
case 'thr':
|
case 'thr':
|
||||||
default:
|
default:
|
||||||
$service = self::instance('wechat');
|
$result = self::wechat()->oauth(session_id(), $request->url(true), $fullMode);
|
||||||
$result = $service->oauth(session_id(), request()->url(true), $fullMode);
|
session("{$appid}_openid", empty($result['openid']) ? null : $result['openid']);
|
||||||
session("{$appid}_openid", $openid = $result['openid']);
|
session("{$appid}_fansinfo", empty($result['fans']) ? null : $result['fans']);
|
||||||
session("{$appid}_fansinfo", $fansinfo = $result['fans']);
|
if ((empty($fullMode) && !empty($result['openid'])) || (!empty($fullMode) && !empty($result['fans']))) {
|
||||||
if ((empty($fullMode) && !empty($openid)) || (!empty($fullMode) && !empty($fansinfo))) {
|
empty($result['fans']) || FansService::set($result['fans']);
|
||||||
empty($fansinfo) || FansService::set($fansinfo);
|
return ['openid' => $result['openid'], 'fansinfo' => $result['fans']];
|
||||||
return ['openid' => $openid, 'fansinfo' => $fansinfo];
|
|
||||||
}
|
}
|
||||||
if (!empty($result['url'])) {
|
if (!empty($result['url'])) { // 授权跳转
|
||||||
redirect($result['url'], [], 301)->send();
|
redirect($result['url'], [], 301)->send();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user