{{wikiTitle}}
登录
目录:
目前已有微信小程序登录、微信公众号登录
第三方登录扩展入口
namespace crmeb\services\oauth;
use crmeb\basic\BaseManager;
use crmeb\services\oauth\storage\MiniProgram;
use crmeb\services\oauth\storage\TouTiao;
use crmeb\services\oauth\storage\Wechat;
use think\facade\Config;
/**
 * 第三方登录
 * Class OAuth
 * @package crmeb\services\oauth
 * @mixin Wechat
 * @mixin TouTiao
 * @mixin MiniProgram
 */
class OAuth extends BaseManager
{
    /**
     * 空间名
     * @var string
     */
    protected $namespace = '\\crmeb\\services\\oauth\\storage\\';
    /**
    * 默认驱动
     * @return mixed
     */
    protected function getDefaultDriver()
    {
        return Config::get('oauth.default', 'wechat');
    }
}
使用第三方登录
默认微信登录方式调用
use crmeb\services\oauth\OAuth;
//默认微信登录
$oauth = new OAuth();
//使用code返回用户信息
$userInfo = $oauth->oauth($code = null, $options = []);
使用微信小程序登录调用
use crmeb\services\oauth\OAuth;
//微信小程序登录
$oauth = new OAuth('mini_program');
$code = 'code';
//使用code返回用户信息
$userInfo = $oauth->oauth( $code = null, $options = [
    'iv'=>$iv,
    'encryptedData'=>$encryptedData
]);
使用微信小程序静默授权登录调用
use crmeb\services\oauth\OAuth;
//微信小程序登录
$oauth = new OAuth('mini_program');
$code = 'code';
//使用code返回用户信息
$userInfo = $oauth->oauth( $code = null, $options = [
    'silence'=>true,
]);
举例增加:头条小程序登录
创建头条小程序登录类\crmeb\services\oauth\storage\TouTiao.php,并需要继承BaseStorage基类,和OAuthInterface接口类,需要完成getUserInfo、oauth两个方法
namespace crmeb\services\oauth\storage;
use crmeb\basic\BaseStorage;
use crmeb\services\oauth\OAuthInterface;
/**
 * 头条小程序登录
 * Class TouTiao
 * @package crmeb\services\oauth\storage
 */
class TouTiao extends BaseStorage implements OAuthInterface
{
    protected function initialize(array $config)
    {
        // TODO: Implement initialize() method.
    }
    //获取用户信息
    public function getUserInfo(string $openid)
    {
        // TODO: Implement getUserInfo() method.
    }
    //授权登录
    public function oauth(string $code = null, array $options = [])
    {
        // TODO: Implement oauth() method.
    }
}
示例头条小程序登录使用方式
use crmeb\services\oauth\storage\TouTiao;
$oauth = new OAuth('tou_tiao');
//或者
$oauth = app()->make(OAuth::class, ['tou_tiao']);
$code = 'code';
//授权用户获取信息
$userInfo = $oauth->oauth($code);
var_dump($userInfo);
//获取用户详细信息
$openid = 'openid';
$userInfo = $oauth->getUserInfo($openid);
var_dump($userInfo);
            
              
                评论({{cateWiki.comment_num}})
                
                
                  {{commentWhere.order ? '评论从旧到新':'评论从新到旧'}}
                
              
              
                
                {{cateWiki.page_view_num}}人看过该文档
              
            
            
              
                评论(0)
                
                
                  {{commentWhere.order ? '评论从旧到新':'评论从新到旧'}}
                
              
              
                
                2108人看过该文档
              
            
            
              
                    
                      {{item.user ? item.user.nickname : ''}}
                      
                        (自评)
                      
                    
                  
                  {{item.content}}
                  
                        {{item.create_time}}
                        
                          删除
                        
                      
                      
          搜索结果
          为您找到{{wikiCount}}条结果
          
            
            
              
              
                
                
                  
                    
                      
                      {{item.page_view_num}}
                    
                    
                      
                      {{item.like ? item.like.like_num : 0}}
                    
                    
                      
                      {{item.comment ? item.comment.comment_num : 0}}
                    
                  
                
              
            
          
          
             
          
        
      
                    位置:
                    
                      
                        {{path.name}}
                      
                      {{(i+1) == item.catalogue.path_data.length ? '':'/'}}