복붙노트

[WORDPRESS] 어떻게 새로 고침 토큰 배경 및 액세스 토큰을 받고 권한을 얻기 위해 사용하는 방법?

WORDPRESS

어떻게 새로 고침 토큰 배경 및 액세스 토큰을 받고 권한을 얻기 위해 사용하는 방법?

해결법


  1. 1.이것은, 내가 문제를 해결하는 방법입니다, 우리는 우리의 데이터베이스에 refreshToken를 저장하고 refreshToken, 우리는 결과를 가져올 수 있습니다 .which 다른 accessToken을 얻을 수 사용 할 필요가 있으며 또 다른 인증이 필요하지 않습니다.

    이것은, 내가 문제를 해결하는 방법입니다, 우리는 우리의 데이터베이스에 refreshToken를 저장하고 refreshToken, 우리는 결과를 가져올 수 있습니다 .which 다른 accessToken을 얻을 수 사용 할 필요가 있으며 또 다른 인증이 필요하지 않습니다.

    <?php
            $client = new Google_Client();
            $client->setAuthConfigFile(plugin_dir_url( __FILE__ ) . '/client_secrets.json');
            $client->setRedirectUri( site_url() . '/wp-admin/admin.php?page=analytica-admin-settings');
            $client->addScope(Google_Service_Analytics::ANALYTICS_READONLY);
            $client->setIncludeGrantedScopes(true);
            $client->setAccessType('offline');
            if ( isset( $_GET['code'] )) {
    
                if($client->isAccessTokenExpired()){
    
                    $client->authenticate($_GET['code']);
    
                    $accessToken = $client->getAccessToken();
                    $refreshToken = $client->getRefreshToken();
    
                    $analytica_tokens = json_encode( array( 'time' => current_time( 'mysql' ),'accessToken' =>  $accessToken, 'refreshToken' => $refreshToken ) );
                    update_option( 'analytica_tokens', $analytica_tokens );
                } 
            } else {
                $resultset = json_decode(get_option('analytica_tokens'));
    
                if ($client->isAccessTokenExpired()) {
                    if( isset( $resultset ) ){
                        $refreshToken = $resultset->refreshToken;
                        $client->refreshToken( $refreshToken );
                        $accessToken = $client->getAccessToken();           
                        $analytica_tokens = json_encode( array( 'time' => current_time( 'mysql' ), 'accessToken' =>  $accessToken, 'refreshToken' => $refreshToken ) );
                        update_option( 'analytica_tokens', $analytica_tokens );
                    } else {
                        echo 'You need to reauthorize the application to get the analytics report.';
                    }
                }
            }
            $auth_url = $client->createAuthUrl();
            ?>
             <a class="connect-to-google-analytics" href='<?php echo $auth_url; ?>'  id="loginText">Connect To Your Google Analytics Account </a>
            <?php
            if( isset($accessToken) ){
                $_SESSION['access_token'] = $accessToken ? $accessToken : $refreshToken;
                $client->setAccessToken($_SESSION['access_token']);
                // Create an authorized analytics service object.
                $analytics = new Google_Service_Analytics($client);
    
                // Get the first view (profile) id for the authorized user.
                $profile = $this->getFirstProfileId($analytics);
    
                // Get the results from the Core Reporting API and print the results.
                $this->results = $this->getResults($analytics, $profile);
            }
            ?>
    
  2. from https://stackoverflow.com/questions/33870439/how-to-use-refresh-token-to-get-authorized-in-background-and-getting-access-toke by cc-by-sa and MIT license