コード例 #1
0
ファイル: SiteController.php プロジェクト: cychenyin/postmill
 public function actionAuth()
 {
     $oauth = new SpeedOpenOAuth(Yii::$app->params['oauth']['appid'], Yii::$app->params['oauth']['appsecretkey']);
     $callbackUrl = 'http://' . Yii::$app->params['oauth']['domain'] . '/index.php?r=site/auth';
     $keys = [];
     $keys['redirect_uri'] = $callbackUrl;
     if (isset($_REQUEST['code'])) {
         $keys['code'] = $_REQUEST['code'];
         try {
             $token = $oauth->getAccessToken('code', $keys);
             // echo "<br><br><br>";
             // echo $oauth->getApiHost();
             // echo "<br><br>request<br>";
             // var_dump($_REQUEST);
             // echo "<br><br>tokens<br>";
             // var_dump($token);
             // die;
         } catch (Exception $e) {
             $msg = $e->getMessage();
         }
         if ($token && $token['code'] == 200 && isset($token['access_token'])) {
             $_SESSION['token'] = $token;
             //setcookie( 'speed_token_'.$oauth->client_id, http_build_query($token) );
             setcookie('speed_token_' . Yii::$app->params['oauth']['appid'], http_build_query($token));
             $user = new \app\models\User();
             $user->accessToken = $token["access_token"];
             $user->authKey = '';
             $detail = $oauth->getUserInfo($user->accessToken);
             if ($detail && isset($detail['code']) && $detail['code'] == 200 && isset($detail['data']) && isset($detail['expires_in'])) {
                 setcookie('speed_user', http_build_query($detail['data']), $detail['expires_in']);
                 $user->id = $detail['data']['id'];
                 $user->username = $detail['data']['name'];
                 $user->mail = $detail['data']['mail'];
                 echo "<br><br>user info get successfully<br>";
             }
             Yii::$app->user->login($user);
             // Yii::$app->user->login(
             // Yii::$app->user->loginByAccessToken
             // Yii::$app->user->loginByCookie
             return $this->goHome();
         }
     }
     return Yii::$app->user->loginRequired();
 }