Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NetSuite连接使用PHP oAuth 1.0获取错误_Php_Api_Oauth_Netsuite - Fatal编程技术网

NetSuite连接使用PHP oAuth 1.0获取错误

NetSuite连接使用PHP oAuth 1.0获取错误,php,api,oauth,netsuite,Php,Api,Oauth,Netsuite,嗨,我想用PHP连接netsuite。我试过邮递员,它工作正常。请求正在发送,我正在得到结果 所以我想用PHP执行同样的事情。因此,我编写了以下代码 <?php define("NETSUITE_URL", 'https://xxxx.restlets.api.netsuite.com/app/site/hosting/restlet.nl'); define("NETSUITE_SCRIPT_ID", 'xx'); define("NE

嗨,我想用PHP连接netsuite。我试过邮递员,它工作正常。请求正在发送,我正在得到结果

所以我想用PHP执行同样的事情。因此,我编写了以下代码

<?php

define("NETSUITE_URL", 'https://xxxx.restlets.api.netsuite.com/app/site/hosting/restlet.nl');
define("NETSUITE_SCRIPT_ID", 'xx');
define("NETSUITE_DEPLOY_ID", 'xx');
define("NETSUITE_ACCOUNT", 'xxxx');
define("NETSUITE_CONSUMER_KEY", 'xxxxxxx');
define("NETSUITE_CONSUMER_SECRET", 'xxxxxx');
define("NETSUITE_TOKEN_ID", 'xxxxxx');
define("NETSUITE_TOKEN_SECRET", 'xxxxxx');

$details = array(
    'status' => 'Testing'
);

sendOrderToNS($details);
function sendOrderToNS($details)
{
    $data_string = json_encode($details);

    $oauth_nonce = md5(mt_rand());
    $oauth_timestamp = time();
    $oauth_signature_method = 'HMAC-SHA1';
    $oauth_version = "1.0";

    $base_string = "POST&" . urlencode(NETSUITE_URL) . "&" . urlencode("deploy=" . NETSUITE_DEPLOY_ID . "&oauth_consumer_key=" . NETSUITE_CONSUMER_KEY . "&oauth_nonce=" . $oauth_nonce . "&oauth_signature_method=" . $oauth_signature_method . "&oauth_timestamp=" . $oauth_timestamp . "&oauth_token=" . NETSUITE_TOKEN_ID . "&oauth_version=" . $oauth_version . "&realm=" . NETSUITE_ACCOUNT . "&script=" . NETSUITE_SCRIPT_ID);
    $sig_string = urlencode(NETSUITE_CONSUMER_SECRET) . '&' . urlencode(NETSUITE_TOKEN_SECRET);
    $signature = base64_encode(hash_hmac("sha1", $base_string, $sig_string, true));

    $auth_header = "OAuth " . 'oauth_signature="' . rawurlencode($signature) . '", ' . 'oauth_version="' . rawurlencode($oauth_version) . '", ' . 'oauth_nonce="' . rawurlencode($oauth_nonce) . '", ' . 'oauth_signature_method="' . rawurlencode($oauth_signature_method) . '", ' . 'oauth_consumer_key="' . rawurlencode(NETSUITE_CONSUMER_KEY) . '", ' . 'oauth_token="' . rawurlencode(NETSUITE_TOKEN_ID) . '", ' . 'oauth_timestamp="' . rawurlencode($oauth_timestamp) . '", ' . 'realm="' . rawurlencode(NETSUITE_ACCOUNT) . '"';

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, NETSUITE_URL . '?&script=' . NETSUITE_SCRIPT_ID . '&deploy=' . NETSUITE_DEPLOY_ID);
    curl_setopt($ch, CURLOPT_POST, "POST");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: ' . $auth_header, 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string) ]);

    $content = curl_exec($ch);
    print_r($content);
    curl_close($ch);

}
?>
但我得到了以下错误:

{错误:{代码:无效的登录尝试,消息:无效的登录尝试。}


如何解决此问题?

url中缺少帐户id

    curl_setopt($ch, CURLOPT_URL, NETSUITE_URL . '?&script=' . NETSUITE_SCRIPT_ID . '&deploy=' . NETSUITE_DEPLOY_ID . '&realm=' . NETSUITE_ACCOUNT );

您应该发送的请求的格式是什么?那里似乎有很多URL编码,不确定这些是否都是正确的。