微博的微连接的网页应用授权(引导用户进入授权页面登录同意授权、创建微博的微连接的网页应用的用户),在同一浏览器中,创建了第一个用户之后,无法再创建第二个用户的分析与解决

1、获取微博的微连接的网页应用授权(引导用户进入授权页面登录同意授权、创建微博的微连接的网页应用的用户)的链接,如图1

图1

2、打开网址:https://weibo.com/ ,确认微博帐号未登录,如图2

图2

3、微博的微连接的网页应用授权(引导用户进入授权页面登录同意授权、创建微博的微连接的网页应用的用户),登录同意授权,如图3

图3

4、通过 Code 换取第三方授权 Access Token,相应数据操作、创建微博的微连接的网页应用的用户,获取微博的微连接的网页应用的用户列表。如图4

图4

5、打开网址:https://weibo.com/ ,确认微博帐号(永夜烟)已登录,如图5

图5

6、此时需要在同一浏览器中,可进入授权页面登录同意授权,登录另外一个微博帐号(terryhong123),以创建微博的微连接的网页应用的用户,最终创建失败,分析:第一个微博帐号(永夜烟)在同一浏览器中已经处于登录状态,因此,自动跳过登录页面,创建微博的微连接的网页应用的用户,但是,由于 user_id 设置了唯一索引,创建失败。如图6
如果用户在授权有效期内重新打开授权页授权(如果此时用户有微博登录状态,这个页面将一闪而过)。

图6

7、现阶段的需求是,希望能够在同一浏览器中,可重复创建多个微博的微连接的网页应用的用户(在创建第二个用户时,需要再次进入授权页面登录同意授权),查看OAuth2.0的文档,发现其支持强制登录功能,如图7
强制登录
授权页会默认读取当前用户的微博登录状态,如果你想让用户重新登录,请在调用authorize接口时传入参数:forcelogin=true,默认不填写此参数相当于forcelogin=false。

图7

8、编辑 \frontend\controllers\WeiboOauth2Controller.php 的 public function actionAuthorize(),在调用authorize接口时传入参数:forcelogin=true

        /* 浏览器 302 跳转:引导用户进入授权页面登录同意授权,获取 code */        Yii::$app->response->redirect(Yii::$app->params['weiboAuth']['hostInfo'] . Yii::$app->params['weiboAuth']['baseUrl'] . '/authorize?response_type=code&forcelogin=true&client_id=' . Yii::$app->params['weiboAuth']['weiboConnectWebApp']['appId'] . '&redirect_uri=' . $redirectUri);

9、此时在同一浏览器中,可进入授权页面登录同意授权,登录另外一个微博帐号(terryhong123),如图8

图8

10、通过 Code 换取第三方授权 Access Token,相应数据操作、创建微博的微连接的网页应用的用户,获取微博的微连接的网页应用的用户列表。如图9

图9

11、打开网址:https://weibo.com/ ,确认微博帐号(永夜烟)已退出,如图10

图10

12、刷新网址:https://weibo.com/ ,确认微博帐号(terryhong123)已登录,如图11

图11

 

永夜