0

REST の使用方法を理解しようとしていますが、行き詰っています。

これが私が見ているドキュメントです:

Request: https://www.domain.com/shipping/packages?id=5123

/members/login/auth
Authenticates a user and sets the szsess cookie that must be passed into any subsequent API method.
Parameters
email – User's email address
pswd – User's password

ユーザーを認証し、API に渡すことができる変数に Cookie を格納するために使用する PHP コードは何でしょうか?

これが私がこれまでに持っているものです:

<?php
$request =  'https://www.domain.com/shipping/packages?id=5123'; 
$session = curl_init($request); 

print_r($session);
?>

私はすべての CURL と Rest のことで非常に迷っています。

4

1 に答える 1

1

[暴言] Cookie を使用して認証している場合、それらは ReSTful ではありません。[/暴言]

この API を扱うには、次のことを学ぶ必要があります (粗雑な実装のおかげです)。

  1. カールを使用
  2. CURL Cookie jar を使用する

2点は簡単です。お尻のほんの少しの痛み。作業を楽にするために、呼び出しを実行する API ラッパーを PHP で定義します。

<?php
class APIWrap {
    private $jarFile = false;
    function __construct($jarFile=null) {
       if ($jarFile) {
          if (file_exists($jarFile)) $this->jarFile = $jarFile;
          else {
              touch($this->jarFile);
              $this->jarFile = $jarFile;
          }
       }
       else {
           $this->jarFile = "/tmp/jar-".md5(time()*rand(1,10000000)).".cookie";
       }
    }
    /* The public methods */
    public function call_url($url) {
       return $this->_call_url($url);
    }
    public function logIn($email,$password) {
        return $this->_call_curl("https://www.domain.com/members/login/auth",array("email" => $email, "pswd" => $password));
    }
    /* Our curl channel generator */
    protected function _call_curl($url,$post=array()) {
       $ch = curl_init();
       curl_setopt($ch, CURLOPT_URL, $url);
       if (count($post)) {
           curl_setopt($ch, CURLOPT_POST, true);
           curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
       }
       curl_setopt($ch, CURLOPT_COOKIEJAR, $this->jarFile);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
       curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
       curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
       return curl_exec($ch);
    }
}

好きなようにcurlopt呼び出しを設定してください - それらは参考のためにそこにあります。重要なのはCURLOPT_COOKIEJARです。

于 2013-05-16T20:45:57.473 に答える