简单的qq第三方登录的实现

简单的qq第三方登录的实现 使用框架 laravel 

 使用安装包 参照文档安装

"socialiteproviders/qq": "^3.0",

代码逻辑
请求接口代码,使用默认的配置参数
public function qq()
{
return Socialite::with('qq')->redirect();
}
自定义参数接口代码
$clientId = "secret"; $clientSecret = "secret";
$redirectUrl = "http://yourdomain.com/api/redirect";
$additionalProviderConfig = ['site' => 'meta.stackoverflow.com'];
$config = new \SocialiteProviders\Manager\Config($clientId, $clientSecret, $redirectUrl, $additionalProviderConfig);
return Socialite::with('weixin')->setConfig($config)->redirect();

回调函数代码获取用户的一系列信息
public function qqlogin()
{
$user = Socialite::driver('qq')->stateless()->user();
$accessTokenResponseBody = $user->accessTokenResponseBody;
dd($user);die;
}
这里statrless 有点坑 有时候可以不加 有时候不加会报未定义的错误,需要注意一下,微信,微博第三方登录大体如此

如果使用的包比较老 如laravel 5.1又发现一个坑,之前3.0的包只用装
"socialiteproviders/qq": "^3.0",就可以实现
如果是5.1要用比较老的包的话还要装 "socialiteproviders/manager": "2.1.2" 这个 不然无法获取openid
5.1使用的版本包
 "socialiteproviders/manager": "2.1.2",
        "socialiteproviders/weibo": "2.0.1",
        "socialiteproviders/qq": "2.0.3",
        "socialiteproviders/weixin-web": "2.0.1",
        "socialiteproviders/weixin": "2.1.1",
 
使用自定义参数 做登录时(老版本才有的问题)
use SocialiteProviders\Manager\Contracts\ConfigInterface as Config;

trait ConfigTrait
{
protected $config;

public function setConfig(Config $config)
}
这里面的命名config有一个坑,会报错 需要把config改成其他名字命名

posted on 2017-08-11 16:02  guoke1970s  阅读(210)  评论(0编辑  收藏  举报

导航