Thinkphp6 对接google谷歌第三方登录接口

在开发项目当中经常会遇到需要第三方登录的开发,国内的QQ、微信、微博、支付宝相应的开发接口都很成熟,配置也很简单,今天我要介绍一下谷歌登录接口的开发方式。

1.首先下载谷歌SDK
Releases · googleapis/google-api-php-client · GitHubA PHP client library for accessing Google APIs. Contribute to googleapis/google-api-php-client development by creating an account on GitHub.https://github.com/googleapis/google-api-php-client/releases

Thinkphp6 对接google谷歌第三方登录接口_第1张图片

根据自己的PHP版本下载相应的接口程序版本。

2.获取谷歌应用的ID和密钥。

 https://console.developers.google.com/  打开网址

Thinkphp6 对接google谷歌第三方登录接口_第2张图片

 根据图示,获取授权。

接下来回提示你获取同意屏幕。

如需创建 OAuth 客户端 ID,您必须先配置同意屏幕---下一步选择外部。确定。

Thinkphp6 对接google谷歌第三方登录接口_第3张图片

这里就根据要求去填写就好了。都是中文,能看懂。

完成以后继续获取授权ID。然后复制授权ID和密钥,配置到你的后台,或者配置文件。

 第三步,写登录和回调文件

登录文件 googleindex.php

//包含配置信息
$data = cache("config", true); //注意这里我是获取的自己系统的配置缓存,这每个人根据自己系统情况修改。
require 'google-api-php-client--PHP7.4/vendor/autoload.php';  
 		$params = input('param');
    	$clientID = trim($data['google_appid']);
    	$clientSecret = trim($data['google_appkey']);
        $redirectUri = HTTP_TYPE.$_SERVER['HTTP_HOST']."/index.php?s=/home/Api/oa_google_callback";  //Google console redirect URI  
 
    // create Client Request to access Google API
        $client = new \Google_Client();
        $client->setClientId($clientID);
        $client->setClientSecret($clientSecret);
        $client->setRedirectUri($redirectUri);
        $client->addScope("email");
        $client->addScope("profile");
        // authenticate code from Google OAuth Flow
        if (isset($params['code'])) {
            $token = $client->fetchAccessTokenWithAuthCode($params['code']);
            $client->setAccessToken($token['access_token']);
            // get profile info
            $google_oauth = new \Google_Service_Oauth2($client);
            $google_account_info = $google_oauth->userinfo->get();
            
            //next...
        } else {
            $loginUrl = $client->createAuthUrl();
            header('location:'.$loginUrl);    
        }

回调文件 callback.php

$data = cache("config", true); //获取缓存设置参数
 require 'google-api-php-client--PHP7.4/vendor/autoload.php';  
 	    $params = input('param');
        $clientID = trim($data['google_appid']);
    	$clientSecret = trim($data['google_appkey']);
        $redirectUri = HTTP_TYPE.$_SERVER['HTTP_HOST']."/index.php?s=/home/Api/oa_google_callback";  //Google console redirect URI  
 
        // create Client Request to access Google API
        $client = new \Google_Client();
        $client->setClientId($clientID);
        $client->setClientSecret($clientSecret);
        $client->setRedirectUri($redirectUri);
        $client->addScope("email");
        $client->addScope("profile");
          // authenticate code from Google OAuth Flow
        if (isset($params['code'])) {
            $token = $client->authenticate($params['code']);
            $client->setAccessToken($token['access_token']);
            $q = 'https://www.googleapis.com/oauth2/v1/userinfo?access_token='.$token['access_token'];
            $json = httpGet($q);
            $userInfoArray = json_decode($json,true);
           // print_r($userInfoArray);
            $type = 'google';
            $client_id = $userInfoArray['id'];
            $client_name = $userInfoArray['name'];
            $client_picture = $userInfoArray['picture'];
            $client_email = $userInfoArray['email'];
            //next...
        }

 页面登陆效果:

Thinkphp6 对接google谷歌第三方登录接口_第4张图片

 

你可能感兴趣的:(php,thinkphp,php,mysql,开发语言)