काम नहीं कर सकता है मैं कुछ नोड जेएस को PHP में दोहराने की कोशिश कर रहा हूं लेकिन यह काम नहीं कर रहा है! नोड नीचे है;नोड जेएस से PHP, यह
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)
}
})
}
)
}
और मेरा PHP जो मैं काम नहीं कर सकता;
$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));
यह सोनी के सर्वर में प्रवेश और एक OAuth कोड को पुनः प्राप्त करने की अपेक्षा की जाती है, Node.js इसलिए यह संभव है काम कर रहा है, लेकिन मैं PHP में काम कर इसे प्राप्त नहीं कर पा रहे।
किसी भी मदद की बहुत सराहना की जाएगी।
कर्ल काम कर रहा है लेकिन मुझे ?authentication_error=true
मिलता है जब इसे एक कोड वापस करना चाहिए जिसका मैं उपयोग कर सकता हूं।
अपनी सामग्री प्रकार सही है? 'सामग्री-प्रकार: एप्लिकेशन/एक्स-www-form-urlencoded' – Dan
सुनिश्चित करें कि आपने नोटिस/चेतावनियां चालू की हैं, इसलिए आपके वर्र्स हम नहीं देख सकते हैं (उदाहरण के लिए '$ userAgent') अगर वे गलती से नहीं हैं तो अलार्म बढ़ाएं दायरे में। – halfer
हां वे सभी दायरे में हैं, एक साइड नोट के रूप में पूर्ण node.js api यहां पाया जा सकता है https://github.com/jhewt/gumer-psn और यहां तक कि इसका एक PHP कार्यान्वयन यहां पाया जा सकता है, https://github.com/ilendemli/gumer-psn-php – user2251919