Postingan lainnya
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." } }
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)
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 ?
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?