我正在用google api在Wordpress上编写函数登录(我自己写的,不是插件),但我有一个问题。想法如下: 1.从google获取token来获取信息(我做到了)。2.比较邮箱和account.If结果为真,不使用密码登录。我在第二步中遇到了一个问题。结果返回true,但是我不明白为什么页面会超载。我使用debug检查值,但没有检查任何内容,我删除了函数"loggIn()",代码运行。下面是我的代码:enter image description here
发布于 2018-10-15 02:58:40
有一段时间,我为后端做了一些类似的东西。
<?php
public function uty_main_page(){
require_once ('config.php');
global $wpdb;
if(isset($_GET['code'])) {
$client->authenticate($_GET['code']);
$_SESSION['token'] = $client->getAccessToken();
$token_decode = json_decode($_SESSION['token']);
update_option( 'uty_refresh_token' , $token_decode->refresh_token );
$client->setAccessToken($_SESSION['token']);
echo 'Authorization Successful';
}
?>
<?php if(get_option( 'uty_refresh_token' ) != ''){ ?>
<li><a href="#uty_upload">Upload</a></li>
<li><a href="#uty_videos">All Videos</a></li>
<?php } ?>
<li><a href="#uty_settings">Settings</a></li>
</ul>
</div>
<div class="tab_content">
<?php if( $client->isAccessTokenExpired() ) { ?>
<?php if(get_option( 'uty_refresh_token' ) != ''){ ?>
<?php
$client->refreshToken( get_option( 'uty_refresh_token' ) );
$_SESSION['token'] = $client->getAccessToken();
$client->setAccessToken($client->getAccessToken());
?>
<div id="uty_upload">
<?php
if(isset($_POST['uty_video_submit'])){
if(isset($_FILES['uty_video'])){
$uploaded = media_handle_upload('uty_video', 0);
if(is_wp_error($uploaded)){
$message = $uploaded->get_error_message();
}
else{
//Do Some coding here
}
}
}
?>
</div>
<?php } ?>
<?php } ?>
<div id="uty_settings">
<?php if(isset($_POST['revoke-access-token'])){ ?>
<?php update_option( 'uty_refresh_token' , '' ); ?>
<?php update_option( 'uty_google_client_api' , '' ); ?>
<?php update_option( 'uty_google_client_id' , '' ); ?>
<?php update_option( 'uty_google_client_secret' , '' ); ?>
<?php update_option( 'uty_youtube_channel' , '' ); ?>
<?php } ?>
<h3>Please enter the below details to kick start your Youtube uploads</h3>
<?php if( !empty(get_option('uty_google_client_api')) && !empty(get_option('uty_google_client_id')) && !empty(get_option('uty_google_client_secret')) && empty(get_option('uty_refresh_token')) ){ ?>
<?php $state = mt_rand(); ?>
<?php $client->setState($state); ?>
<?php $_SESSION['state'] = $state; ?>
<?php $authUrl = $client->createAuthUrl(); ?>
<a href="<?php echo $authUrl; ?>">Click here to authorize your credentials</a>
<?php } elseif( !empty(get_option('uty_google_client_api')) && !empty(get_option('uty_google_client_id')) && !empty(get_option('uty_google_client_secret')) && !empty(get_option('uty_refresh_token')) ){ ?>
<?php } ?>
</div>
</div>
</div>
</div>
<?php } ?>在上面的函数中,我所做的主要工作是在用户第一次登录时存储refresh_token,然后将其传递到函数中,以便每次都获得新的访问令牌。
$client->refreshToken( get_option( 'uty_refresh_token' ) );
$_SESSION['token'] = $client->getAccessToken();
$client->setAccessToken($client->getAccessToken());希望这能对你有所帮助
https://stackoverflow.com/questions/52805013
复制相似问题