Я хочу использовать набор учетных записей для проверки номера телефона в моем проекте PHP. Но после проверки номера телефона я не улавливаю номер телефона пользователя. Я работаю на localhost и уже зарегистрировал его на аккаунте. С помощью функции loginCallback я могу узнать успешность проверки номера телефона или нет. Но я не получаю номер телефона пользователя.
У меня есть два файла.
index.php:
<input value="+88" id="country_code" />
<input placeholder="phone number" id="phone_number"/>
<button onclick="smsLogin();">Login via SMS</button>
<div>OR</div>
<input placeholder="email" id="email"/>
<button onclick="emailLogin();">Login via Email</button>
<script>
// initialize Account Kit with CSRF protection
AccountKit_OnInteractive = function(){
AccountKit.init(
{
appId:"1225892824282896",
state:"{{csrf}}",
version:"v1.1",
fbAppEventsEnabled:true,
redirect:"hello.php"
}
);
};
// login callback
function loginCallback(response) {
if (response.status === "PARTIALLY_AUTHENTICATED") {
var code = response.code;
var csrf = response.state;
console.log('PARTIALLY_AUTHENTICATED');
// Send code to server to exchange for access token
}
else if (response.status === "NOT_AUTHENTICATED") {
// handle authentication failure
}
else if (response.status === "BAD_PARAMS") {
// handle bad parameters
}
}
// phone form submission handler
function smsLogin() {
var countryCode = document.getElementById("country_code").value;
var phoneNumber = document.getElementById("phone_number").value;
AccountKit.login(
'PHONE',
{countryCode: countryCode, phoneNumber: phoneNumber}, // will use default values if not specified
loginCallback
);
}
// email form submission handler
function emailLogin() {
var emailAddress = document.getElementById("email").value;
AccountKit.login(
'EMAIL',
{emailAddress: emailAddress},
loginCallback
);
}
</script>
Другой файл login_success.php
<?php
// Initialize variables
$app_id = '12258928242****';
$secret = 'd485d794afb3e8aa2e4a63****';
$version = 'v1.1'; // 'v1.1' for example
// Method to send Get request to url
function doCurl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
return $data;
}
// Exchange authorization code for access token
$token_exchange_url = 'https://graph.accountkit.com/'.$version.'/access_token?'.
'grant_type=authorization_code'.
'&code='.$_POST['code'].
"&access_token=AA|$app_id|$secret";
$data = doCurl($token_exchange_url);
$user_id = $data['id'];
$user_access_token = $data['access_token'];
$refresh_interval = $data['token_refresh_interval_sec'];
// Get Account Kit information
$me_endpoint_url = 'https://graph.accountkit.com/'.$version.'/me?'.
'access_token='.$user_access_token;
$data = doCurl($me_endpoint_url);
$phone = isset($data['phone']) ? $data['phone']['number'] : '';
$email = isset($data['email']) ? $data['email']['address'] : '';
?>
<head>
<title>Account Kit PHP App</title>
</head>
<body>
<div>User ID: <?php echo $user_id; ?></div>
<div>Phone Number: <?php echo $phone; ?></div>
<div>Email: <?php echo $email; ?></div>
<div>Access Token: <?php echo $user_access_token; ?></div>
<div>Refresh Interval: <?php echo $refresh_interval; ?></div>
</body>
<form id="login_success" method="post" action="hello.php">
<input id="csrf" type="hidden" name="csrf" />
<input id="code" type="hidden" name="code" />
</form>
<script>
function loginCallback(response) {
if (response.status === "PARTIALLY_AUTHENTICATED") {
document.getElementById("code").value = response.code;
document.getElementById("csrf").value = response.state;
document.getElementById("login_success").submit();
}
}
</script>