login menggunakan akun google pada CI

Controller :

 public function create_google(){
		include_once APPPATH .'third_party/google-api-client/Google_Client.php';
        include_once APPPATH .'third_party/google-api-client/contrib/Google_Oauth2Service.php';

		// Disini di inputkan Google Project API Credentials
		$clientId = '#';
		$clientSecret = '#';
		$redirectUrl = base_url() . 'v1/user/';

		// Konfigurasi Google Client
		$gClient = new Google_Client();
        $gClient->setApplicationName('Login ke Aplikasi');
        $gClient->setClientId($clientId);
        $gClient->setClientSecret($clientSecret);
        $gClient->setRedirectUri($redirectUrl);
        $google_oauthV2 = new Google_Oauth2Service($gClient);
		if (isset($_REQUEST['code'])) {
			$gClient->authenticate();
			$this->session->set_userdata('token', $gClient->getAccessToken());
			redirect($redirectUrl);
		}
		$token = $this->session->userdata('token');
		if (!empty($token)) {
			$gClient->setAccessToken($token);
		}
		if ($gClient->getAccessToken()) {
			$userProfile = $google_oauthV2->userinfo->get();
			// database di masukan disini
			$userData['oauth_provider'] = 'google';
			$userData['oauth_uid'] = $userProfile['id'];
			$userData['first_name'] = $userProfile['given_name'];
			$userData['last_name'] = $userProfile['family_name'];
			$userData['email_'] = $userProfile['email'];
			$userData['gender'] = $userProfile['gender'];
			$userData['locale'] = $userProfile['locale'];
			$userData['profile_url'] = $userProfile['link'];
			$userData['picture_url'] = $userProfile['picture'];
			// Insert atau update user data
			$resp = $this->m_user->user_create_data($userData);
			if(!empty($resp)){
                $data['userData'] = $userData;
                $this->session->set_userdata('userData',$userData);
            } else {
               $data['userData'] = array();
            }
			if($resp['errorCode']  == 200){
				 $stat = "SUCCESS";
			}else{
			  $stat = "ERROR";
			}
	        $count = array($resp);
	        $jsonAr = array(
	        	"_meta" => array('status' => $stat,'count' => count($count)),
	            "result" => $resp
	        );
	        json_output($resp['errorCode'],$jsonAr);
        } else {
            $url = $gClient->createAuthUrl();
		    header("Location: $url");
        }
    }

Model :

     public function user_create_data($data = array()){
        $this->db->select($this->primaryKey);
        $this->db->from($this->tableName);
        $this->db->where(array('oauth_provider'=>$data['oauth_provider'],'oauth_uid'=>$data['oauth_uid'],'email'=>$data['email']));
        $prevQuery = $this->db->get();
        $prevCheck = $prevQuery->num_rows();

        if($prevCheck > 0){
            $prevResult = $prevQuery->row_array();
            $data['updated_at'] = date("Y-m-d H:i:s");
            $update = $this->db->update($this->tableName,$data,array('id_user'=>$prevResult['id_user']));
            $userID = $prevResult['id_user'];
            return array('errorCode' => 200,'userMessage' => 'Already Registered');
        }else{
            $data['created_at'] = date("Y-m-d H:i:s");
            $data['updated_at'] = date("Y-m-d H:i:s");
            $insert = $this->db->insert($this->tableName,$data);
            $userID = $this->db->insert_id();
            return array('errorCode' => 200,'userMessage' => 'Data has been created');
        }

        return $userID?$userID:FALSE;
    }

sore semuanya butuh bantuannya nih, pada saat login berhasil masuk pada halaman login google nah setelah di allow muncul error seperti di bawah dan data user tidak tersimpan pada DB???? mungkin ada yg bisa bantu error nya :

http://localhost/api-v8/v1/user/?code=4/AAACp5G7OdLM0nKXh1XLb3M41q54e-NZKyGPkpJfZs5q4n2ePGBvrxceOC9gZytj5sUeuHo27Q-sm5NjHHPWJsQ#

{ "_meta": { "status": "ERROR", "count": 1 }, "result": { "errorCode": 404, "userMessage": "Not Found." } }

avatar abdulrojakUG
@abdulrojakUG

59 Kontribusi 0 Poin

Diperbarui 6 tahun yang lalu

3 Jawaban:

Itu tulisannya Not Found gan berarti kan

 http://localhost/api-v8/v1/user/?code=4/AAACp5G7OdLM0nKXh1XLb3M41q54e-NZKyGPkpJfZs5q4n2ePGBvrxceOC9gZytj5sUeuHo27Q-sm5NjHHPWJsQ#

tidak ada di alamat situs nya (*apa ya bahasanya haha saya sebut gitu aja yaa)

avatar markeronly
@markeronly

378 Kontribusi 230 Poin

Dipost 6 tahun yang lalu

iya not found, seharusnya sih dia harus baca

 $resp = $this->m_user->user_create_data($userData);
			if(!empty($resp)){
                $data['userData'] = $userData;
                $this->session->set_userdata('userData',$userData);
            } else {
               $data['userData'] = array();
            }
			if($resp['errorCode']  == 200){
				 $stat = "SUCCESS";
			}else{
			  $stat = "ERROR";
			}
	        $count = array($resp);
	        $jsonAr = array(
	        	"_meta" => array('status' => $stat,'count' => count($count)),
	            "result" => $resp
	        );
	        json_output($resp['errorCode'],$jsonAr);

tapi malah di lewatin jadinya not found, mungkin ada solusi ?

avatar abdulrojakUG
@abdulrojakUG

59 Kontribusi 0 Poin

Dipost 6 tahun yang lalu

selama ini aku pakai ga ada masalah coba cek di console developernya, https://console.developers.google.com di OAuth 2.0 Authorized redirect URIs udah dimasukkan alamat localhostnya blm?

avatar welldone
@welldone

66 Kontribusi 45 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban