2015-03-19 4 views
1

Использовали PHP-скрипт для чтения пользовательских объектов в течение нескольких недель. Сегодня я начал получать {"errors": ["Unauthorized"]} ответы. Я все еще могу войти в систему, используя веб-портал и те же учетные данные. Приложение Android по-прежнему хорошо работает с использованием того же приложения QuickBlox. Почесывали голову. Может ли кто-нибудь помочь?QuickBlox Неавторизованный с использованием CURL PHP

Код:

<?php 

// Application credentials - change to yours (found in QB Dashboard) 
DEFINE('APPLICATION_ID', 99999); 
DEFINE('AUTH_KEY', "AbCd..."); 
DEFINE('AUTH_SECRET', "ZxYvW..."); 

// User credentials 
DEFINE('USER_LOGIN', "[email protected]"); 
DEFINE('USER_PASSWORD', "password"); 

// Quickblox endpoints 
DEFINE('QB_API_ENDPOINT', "https://api.quickblox.com"); 
DEFINE('QB_PATH_SESSION', "session.json"); 

// Generate signature 
$nonce = rand(); 
$timestamp = time(); // time() method must return current timestamp in UTC but seems like hi is return timestamp in current time zone 
$signature_string = "application_id=".APPLICATION_ID."&auth_key=".AUTH_KEY."&nonce=".$nonce."&timestamp=".$timestamp."&user[login]=".USER_LOGIN."&user[password]=".USER_PASSWORD; 

echo "stringForSignature: " . $signature_string . "<br><br>"; 
$signature = hash_hmac('sha1', $signature_string , AUTH_SECRET); 

// Build post body 
$post_body = http_build_query(array(
       'application_id' => APPLICATION_ID, 
       'auth_key' => AUTH_KEY, 
       'timestamp' => $timestamp, 
       'nonce' => $nonce, 
       'signature' => $signature, 
       'user[login]' => USER_LOGIN, 
       'user[password]' => USER_PASSWORD 
       )); 

echo "postBody: " . $post_body . "<br><br>"; 
// Configure cURL 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, QB_API_ENDPOINT . '/' . QB_PATH_SESSION); // Full path is - https://api.quickblox.com/session.json 
curl_setopt($curl, CURLOPT_POST, true); // Use POST 
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_body); // Setup post body 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // Receive server response 

// Execute request and read response 
$response = curl_exec($curl); 

// Check errors 
if ($response) { 
     echo $response . "\n"; 
} else { 
     $error = curl_error($curl). '(' .curl_errno($curl). ')'; 
     echo $error . "\n"; 
} 

$jsonResponse = json_decode($response,true); 
$qbToken = $jsonResponse['session']['token']; 
+0

То же самое здесь. Вы решаете? – Maykonn

ответ

0

1.First вам нужно проверить учетные данные для quickblox, который вы передаете в сценарий, как APPID, authKey

2.Then необходимо проверить, что пользователь зарегистрирован в том же учетная запись quickblox или нет.

3. Еще одна вещь, которую вам нужно знать, что в php пароль быстрой учетной записи должен быть больше 8 символов.

Смежные вопросы