mirror of
https://gitee.com/zoujingli/ThinkAdmin.git
synced 2025-04-06 03:58:04 +08:00
[更新]增加又模式网页授权兼容
This commit is contained in:
parent
cb6b3f9eb1
commit
7b175f9aa4
@ -15,7 +15,6 @@
|
||||
namespace service;
|
||||
|
||||
use app\wechat\service\FansService;
|
||||
use function Couchbase\defaultDecoder;
|
||||
use think\Exception;
|
||||
|
||||
/**
|
||||
@ -94,22 +93,42 @@ class WechatService
|
||||
*/
|
||||
public static function webOauth($fullMode = 0)
|
||||
{
|
||||
$appid = sysconf('wechat_thr_appid');
|
||||
$appid = self::getAppid();
|
||||
list($openid, $fansinfo) = [session("{$appid}_openid"), session("{$appid}_fansinfo")];
|
||||
if ((empty($fullMode) && !empty($openid)) || (!empty($fullMode) && !empty($fansinfo))) {
|
||||
empty($fansinfo) || FansService::set($fansinfo);
|
||||
return ['openid' => $openid, 'fansinfo' => $fansinfo];
|
||||
}
|
||||
$service = self::instance('wechat');
|
||||
$result = $service->oauth(session_id(), request()->url(true), $fullMode);
|
||||
session("{$appid}_openid", $openid = $result['openid']);
|
||||
session("{$appid}_fansinfo", $fansinfo = $result['fans']);
|
||||
if ((empty($fullMode) && !empty($openid)) || (!empty($fullMode) && !empty($fansinfo))) {
|
||||
empty($fansinfo) || FansService::set($fansinfo);
|
||||
return ['openid' => $openid, 'fansinfo' => $fansinfo];
|
||||
}
|
||||
if (!empty($result['url'])) {
|
||||
redirect($result['url'], [], 301)->send();
|
||||
switch (strtolower(sysconf('wechat_type'))) {
|
||||
case 'api':
|
||||
$wechat = self::oauth();
|
||||
if (request()->get('state') !== $appid) {
|
||||
$snsapi = empty($fullMode) ? 'snsapi_base' : 'snsapi_userinfo';
|
||||
$OauthUrl = $wechat->getOauthRedirect(request()->url(true), $appid, $snsapi);
|
||||
redirect($OauthUrl, [], 301)->send();
|
||||
}
|
||||
$token = $wechat->getOauthAccessToken();
|
||||
if (isset($token['openid'])) {
|
||||
session("{$appid}_openid", $openid = $token['openid']);
|
||||
if (empty($fullMode)) {
|
||||
return ['openid' => $openid, 'fansinfo' => []];
|
||||
}
|
||||
session("{$appid}_fansinfo", $fansinfo = $wechat->getUserInfo($token['access_token'], $openid));
|
||||
}
|
||||
return ['openid' => $openid, 'fansinfo' => $fansinfo];
|
||||
case 'thr':
|
||||
default:
|
||||
$service = self::instance('wechat');
|
||||
$result = $service->oauth(session_id(), request()->url(true), $fullMode);
|
||||
session("{$appid}_openid", $openid = $result['openid']);
|
||||
session("{$appid}_fansinfo", $fansinfo = $result['fans']);
|
||||
if ((empty($fullMode) && !empty($openid)) || (!empty($fullMode) && !empty($fansinfo))) {
|
||||
empty($fansinfo) || FansService::set($fansinfo);
|
||||
return ['openid' => $openid, 'fansinfo' => $fansinfo];
|
||||
}
|
||||
if (!empty($result['url'])) {
|
||||
redirect($result['url'], [], 301)->send();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user