Sto cercando di replicare qualche Node JS in PHP ma non riesco a farlo funzionare! Il nodo è sotto;Nodo da JS a PHP, impossibile farlo funzionare
function initLogin(callback) {
debug('Getting login');
request.get({
url: psnURL.SignIN
, headers : {
'User-Agent': 'Mozilla/5.0 (Linux; U; Android 4.3; '+options.npLanguage+'; C6502 Build/10.4.1.B.0.101) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 PlayStation App/1.60.5/'+options.npLanguage+'/'+options.npLanguage
}
}
, function (error, response, body) {
(typeof callback === "function" ? getLogin(callback, psnVars.SENBaseURL + response.req.path) : getLogin(undefined, psnVars.SENBaseURL + response.req.path));
})
}
/*
* @desc Login into PSN/SEN and creates a session with an auth code
* @param Function callback - Calls this function once the login is complete
*/
function getLogin(callback, url) {
request.post(psnURL.SignINPOST
,{
headers: {
'Origin':'https://auth.api.sonyentertainmentnetwork.com'
,'Referer': url
}
,form:{
'params' : 'service_entity=psn'
,'j_username' : options.email
,'j_password' : options.password
}
}, function (error, response, body) {
request.get(response.headers.location, function (error, response, body) {
if (!error) {
var urlString = unescape(response.req.path);
psnVars.authCode = urlString.substr(urlString.indexOf("authCode=") + 9, 6);
debug('authCode obtained: ' + psnVars.authCode);
getAccessToken(psnVars.authCode, callback);
}
else {
debug('ERROR: ' + error)
}
})
}
)
}
E il mio PHP che non riesco a lavorare;
$c = curl_init();
curl_setopt_array($c, array(
CURLOPT_URL => $PSNSignIn,
CURLOPT_USERAGENT => $userAgent,
CURLOPT_HEADER => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_COOKIEJAR => realpath('/tmp/cookieJar.txt'),
CURLOPT_FAILONERROR => 1,
));
$res = curl_exec($c);
$path = explode($SENBaseURL, curl_getinfo($c, CURLINFO_EFFECTIVE_URL));
$referer = $SENBaseURL . $path[1];
var_dump(file_get_contents('tmp/cookieJar.txt'), $res);
$c = curl_init();
curl_setopt_array($c, array(
CURLOPT_URL => $SignINPOST,
CURLOPT_USERAGENT => $userAgent,
CURLOPT_REFERER => $referer,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_HEADER => array(
'Origin: https://auth.api.sonyentertainmentnetwork.com',
'Content-Type: application/x-www-form-urlencoded',
),
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => array(
'params' => 'service_entity=psn',
'j_username' => $username,
'j_password' => $password,
),
CURLOPT_COOKIEFILE => 'tmp/cookieJar',
CURLOPT_FAILONERROR => 1,
));
$res = curl_exec($c);
var_dump($res, curl_getinfo($c));
Si suppone di login nel server di Sony e recuperare un codice OAuth, il Node.js sta lavorando in modo è possibile, ma io non riesco a farlo funzionare in PHP.
Qualsiasi aiuto sarebbe molto apprezzato.
Il CURL sta funzionando ma ottengo un ?authentication_error=true
quando deve restituire un codice che posso utilizzare.
è il tuo tipo di contenuto corretto? 'Content-Type: application/x-www-form-urlencoded' – Dan
Accertati di aver attivato avvisi/avvisi, in modo che i tuoi vars non possano vedere (ad esempio '$ userAgent') sollevare l'allarme se non sono accidentalmente nel campo di applicazione. – halfer
Sì, sono tutti nella portata, come nota a margine la piena node.js api può essere trovata qui https://github.com/jhewt/gumer-psn e anche una sua implementazione PHP può essere trovata qui, https://github.com/ilendemli/gumer-psn-php – user2251919