微博第三方登录,多地址回调

多地址回调说明在最后。

文档说明:
微博登录
说一下网页的流程:

第一步:拉起微博授权页面

建议前端拉起,后端只负责校验,使用state作为后端校验依据以及传输参数。微博没有特意留这个参数,但是微博设计的比较宽松,你可以在redirect_url里面写回调地址以及参数,这个非常好用。

https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI

第二步

如果用户同意授权,页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE:

后端拿着code换取Access Token:

https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE

返回值,一看就懂不解释:

{
    "access_token": "SlAV32hkKG",
    "remind_in": 3600,
    "expires_in": 3600 
}

使用获得的OAuth2.0 Access Token调用API,获取用户身份,完成用户的登录。文档里面说的很隐晦,让你下载他们的sdk。

baseurl: https://api.weibo.com/users/show.json
    protected function getUserByToken(AccessTokenInterface $token)
    {
        $response = $this->getHttpClient()->get($this->baseUrl . '/' . $this->version . '/users/show.json', [
            'query' => [
                'uid' => $token['uid'],
                'access_token' => $token->getToken(),
            ],
            'headers' => [
                'Accept' => 'application/json',
            ],
        ]);

        return json_decode($response->getBody(), true);
    }

就能获取到用户信息了。

微博是支持多地址回调的,但是不支持多域名。
不要在这里设置回调地址,直接在应用管理里面设置域名信息。
微博第三方登录,多地址回调_第1张图片

微博第三方登录,多地址回调_第2张图片

网站信息->基本信息->编辑基本信息,设置域名即可,建议设置一级域名,这样的话二级域名也是可以作为回调页动态传递的,相当于支持多地址回调了,很方便。

你可能感兴趣的:(微博第三方登录,多地址回调)