ConnectyCube/android-messenger-app

Token issue while user sign up

aaryan1 opened this issue · 16 comments

curl -X POST
-H "Content-Type: application/json"
-H "CB-Token: "
-d '{"user": {"login": "Dacia", "password": "petU4or!", "email": "dacia_k@domain.com", "facebook_id": "91234409", "twitter_id": "83510562734", "full_name": "Dacia Kail ", "phone": "+6110797757"}}'
https://api.connectycube.com/users

Note -not able to figure out from where I can get the value of "CB-Token: " .

I am getting "invalid token error" while accessing this Api.

getting this response.

{
errors: [
"Token is required"
]
}

it means you should create a session before performing this request, more there

Hi,
While registering new user, I firstly call session api. Which return me token value in response.
{
session: {
id: 19234790,
user_id: 0,
application_id: 3574,
nonce: 787599541,
token: "7a02225b540c7df2ece64b9d83142325c1000df6",
ts: 1604403380,
created_at: "2020-11-03T11:36:21Z",
updated_at: "2020-11-03T11:36:21Z"
}
}

But when I try to pass this token value in headers for registration api. I got below mentione response.
{
errors: [
"Token is required"
]
}

With which key did you put the token to the headed? 'CB-Token' like thete?

Like this - Here $token contains the value which I recieved from session api.

curl_setopt($ch, CURLOPT_HTTPHEADER, array
(
'Content-Type: application/json',
"CB-Token: <".$token.">")
);

there should be only token string without any special symbols, like

CB-Token: beefecd44c88effee4dc9dabb21ad760650001dc

Still got same response -

curl_setopt($ch, CURLOPT_HTTPHEADER, array
(
'Content-Type: application/json',
"CB-Token: ".$token)
);
Error Response -
{
errors: [
"Token is required"
]
}

it means you are putting the token not correctly, please provide the complete request

Currently got below mentioned token value from session api -

$token - cf9bf2d746990c55eed6d0af9d9261311c000df6

Pass this value dynamically in registration api.

DEFINE('REG_CB_API_ENDPOINT', "https://api.connectycube.com");
DEFINE('REG_CB_PATH_SESSION', "users");

// Build post body
$post_body1 = http_build_query(array(
'application_id' => APPLICATION_ID,
'auth_key' => AUTH_KEY,
'timestamp' => $ts,
'nonce' => $nonce1,
'signature' => $signature,
'user[login]' => USER_LOGIN,
'user[password]' => USER_PASSWORD,
'user[email]' => 'richa@gmail.com'
));

Curl Request -
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, REG_CB_API_ENDPOINT . '/' . REG_CB_PATH_SESSION);
curl_setopt($curl, CURLOPT_POST, true); // Use POST
curl_setopt($ch, CURLOPT_HTTPHEADER, array
(
'Content-Type: application/json',
'CB-Token: '.$token)
);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_body1); // Setup post body
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // Receive server response
echo $response = curl_exec($curl);
curl_close($curl);

are you sure, that field $token not empty?

Yes, print that token value while executing script. I also tried by passing some random alpha numeric value. But got same response.

DEFINE('REG_CB_PATH_SESSION', "users");

do you use this part for creating a session?
For session creation, you should use session instead of users

Sorry, but I'm not a PHP developer and I can be mistaken in your code)))

No, previously shared part is only for registartion. Below mentioned code is for session, from where I recieved token value in json.

Session -
DEFINE('SESSION_CB_API_ENDPOINT', "https://api.connectycube.com");
DEFINE('SESSION_CB_PATH_SESSION', "session");

$nonce = rand();
$timestamp = time();
$signature_string = "application_id=".APPLICATION_ID."&auth_key=".AUTH_KEY."&nonce=".$nonce."&timestamp=".$timestamp;
$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
));

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, SESSION_CB_API_ENDPOINT . '/' . SESSION_CB_PATH_SESSION);
curl_setopt($curl, CURLOPT_POST, true); // Use POST
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_body); // Setup post body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // Receive server response
$responce = curl_exec($curl);
curl_close($curl);

$resp = json_decode($responce);
$token = $resp->session->token;
$nonce1 = $resp->session->nonce;
$ts = $resp->session->ts;

Registration -
DEFINE('REG_CB_API_ENDPOINT', "https://api.connectycube.com");
DEFINE('REG_CB_PATH_SESSION', "users");

// User credentials
DEFINE('USER_LOGIN', "test");
DEFINE('USER_PASSWORD', "12345");

// Generate signature
$nonce = rand();
$timestamp = time(); 
$signature_string = "application_id=".APPLICATION_ID."&auth_key=".AUTH_KEY."&nonce=".$nonce1."&timestamp=".$ts."&user[login]=".USER_LOGIN."&user[password]=".USER_PASSWORD;

$signature = hash_hmac('sha1', $signature_string , AUTH_SECRET);

// Build post body
$post_body1 = http_build_query(array(
                'application_id' => APPLICATION_ID,
                'auth_key' => AUTH_KEY,
                'timestamp' => $ts,
                'nonce' => $nonce1,
                'signature' => $signature,
                'user[login]' => USER_LOGIN,
                'user[password]' => USER_PASSWORD,
                'user[email]' => 'richa@gmail.com'
                ));

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, REG_CB_API_ENDPOINT . '/' . REG_CB_PATH_SESSION); 
curl_setopt($curl, CURLOPT_POST, true); // Use POST
curl_setopt($ch, CURLOPT_HTTPHEADER, array
	(
			'Content-Type: application/json',
			'CB-Token: '.$token)
	);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_body1); // Setup post body
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // Receive server response
echo $responce1 = curl_exec($curl);
curl_close($curl);

for the second request will be enough this data only

'user[login]' => USER_LOGIN,
'user[password]' => USER_PASSWORD,
'user[email]' => 'richa@gmail.com'

other parameters are redundant

This thread re how to create a session in PHP might be helpful ConnectyCube/connectycube-reactnative-samples#13

When I got token from below mentioned session api -
https://api.connectycube.com/session
Token - e38db313879bb3b427a4c45cfea942f944000df6

Then I pass this token in user sign up api via curl-
https://api.connectycube.com/users

Then I got below mentioned response -
{
errors: [
"Token is required"
]
}

Also tried to print curl response and got this -

Array

  | (
  | [url] => https://api.connectycube.com/users
  | [content_type] => text/html; charset=utf-8
  | [http_code] => 400
  | [header_size] => 313
  | [request_size] => 249
  | [filetime] => -1
  | [ssl_verify_result] => 0
  | [redirect_count] => 0
  | [total_time] => 0.858904
  | [namelookup_time] => 0.00073
  | [connect_time] => 0.211441
  | [pretransfer_time] => 0.643958
  | [size_upload] => 80
  | [size_download] => 0
  | [speed_download] => 0
  | [speed_upload] => 93
  | [download_content_length] => 0
  | [upload_content_length] => 80
  | [starttransfer_time] => 0.858877
  | [redirect_time] => 0
  | [redirect_url] =>
  | [primary_ip] => 52.205.218.40
  | [certinfo] => Array
  | (
  | )
  |  
  | [primary_port] => 443
  | [local_ip] => 139.59.67.0
  | [local_port] => 52842
  | )

No activity for a long time. Closing... If you still have the issue, please create a new one with details.