Changes between Version 3 and Version 4 of OpenPNEAPI

Show
Ignore:
Author:
sakai (IP: 203.143.101.161)
Timestamp:
03/15/07 15:31:07 (10 years ago)
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OpenPNEAPI

    v3 v4  
    1 = OpenPNE API 仕様案 = 
    2  
    3 最終更新日:2006/05/08 23:03 
    4  
    5 == 目次 == 
    6  
    7  * [http://trac.openpne.jp/wiki/OpenPNEAPI#section1 1. OpenPNE API とは?] 
    8  * [http://trac.openpne.jp/wiki/OpenPNEAPI#section2 2. 概要] 
    9    * [http://trac.openpne.jp/wiki/OpenPNEAPI#section2-1 2.1. 通信主体] 
    10    * [http://trac.openpne.jp/wiki/OpenPNEAPI#section2-2 2.2. プロトコル] 
    11    * [http://trac.openpne.jp/wiki/OpenPNEAPI#section2-3 2.3. セキュリティ] 
    12  * [http://trac.openpne.jp/wiki/OpenPNEAPI#section3 3. 認証情報の受け渡し] 
    13    * [http://trac.openpne.jp/wiki/OpenPNEAPI#section3-1 3.1. 概要] 
    14    * [http://trac.openpne.jp/wiki/OpenPNEAPI#section3-2 3.2. セッションIDの生成方法] 
    15    * [http://trac.openpne.jp/wiki/OpenPNEAPI#section3-3 3.3. メンバートークン] 
    16    * [http://trac.openpne.jp/wiki/OpenPNEAPI#section3-4 3.4. 外部サーバへのURL] 
    17    * [http://trac.openpne.jp/wiki/OpenPNEAPI#section3-5 3.5. 認証API通信] 
    18  * [http://trac.openpne.jp/wiki/OpenPNEAPI#section4 4. データ取得] 
    19    * [http://trac.openpne.jp/wiki/OpenPNEAPI#section4-1 4.1. コマンドコード] 
    20    * [http://trac.openpne.jp/wiki/OpenPNEAPI#section4-2 4.2. データ取得例] 
    21      * [http://trac.openpne.jp/wiki/OpenPNEAPI#section4-2-1 4.2.1. メンバー情報取得] 
    22  * [http://trac.openpne.jp/wiki/OpenPNEAPI#section5 5. エラーの場合] 
    23    * [http://trac.openpne.jp/wiki/OpenPNEAPI#section5-1 5.1. エラーコード一覧] 
    24    * [http://trac.openpne.jp/wiki/OpenPNEAPI#section5-2 5.2. レスポンス例] 
    25  * [http://trac.openpne.jp/wiki/OpenPNEAPI#section6 6. 参考URL] 
    26  
    27 ----- 
    281{{{ 
    292#!html 
     3<h1>OpenPNE API 仕様</h1> 
     4 
     5<p>最終更新日:2006/09/03</p> 
     6 
     7<h2>目次</h2> 
     8 
     9<ul> 
     10<li><a href="#section1">1. OpenPNE API とは?</a></li> 
     11<li><a href="#section2">2. 概要</a> 
     12  <ul> 
     13  <li><a href="#section2-1">2.1. 通信主体</a></li> 
     14  <li><a href="#section2-2">2.2. プロトコル</a></li> 
     15  <li><a href="#section2-3">2.3. セキュリティ</a></li> 
     16 
     17  </ul></li> 
     18<li><a href="#section3">3. 認証情報の受け渡し</a> 
     19  <ul> 
     20  <li><a href="#section3-1">3.1. 概要</a></li> 
     21  <li><a href="#section3-2">3.2. セッションIDの生成方法</a></li> 
     22  <li><a href="#section3-3">3.3. メンバートークン</a></li> 
     23  <li><a href="#section3-4">3.4. 外部サーバへのURL</a></li> 
     24 
     25  <li><a href="#section3-5">3.5. 認証API通信</a></li> 
     26  </ul></li> 
     27<li><a href="#section4">4. データ取得</a> 
     28  <ul> 
     29  <li><a href="#section4-1">4.1. コマンドコード</a></li> 
     30  <li><a href="#section4-2">4.2. データ取得例</a> 
     31    <ul> 
     32 
     33    <li><a href="#section4-2-1">4.2.1. メンバー情報取得</a></li> 
     34    </ul></li> 
     35  </ul></li> 
     36<li><a href="#section5">5. ポイント</a> 
     37  <ul> 
     38  <li><a href="#section5-1">5.1. ポイント加算通信</a></li> 
     39  <li><a href="#section5-2">5.2. ポイント残高照会通信</a></li> 
     40 
     41  </ul></li> 
     42<li><a href="#section6">6. エラーの場合</a> 
     43  <ul> 
     44 
     45  <li><a href="#section6-1">6.1. エラーコード一覧</a></li> 
     46  <li><a href="#section6-2">6.2. レスポンス例</a></li> 
     47  </ul></li> 
     48<li><a href="#section7">7. 参考URL</a> 
     49 
     50</ul> 
     51 
     52<hr> 
     53 
    3054<h2 id="section1">1. OpenPNE API とは?</h2> 
    31 }}} 
    32  
    33  '''OpenPNE API'''とは、:: 
    34    SNSサーバ上にある'''認証情報'''および'''SNSのデータ'''を、'''外部サーバ'''に対してHTTP通信により提供するためのAPIである。 
    35  
    36  '''認証情報'''とは、:: 
    37    SNSサーバでユーザが認証済みである事を示す情報である。 
    38  
    39  '''SNSのデータ'''とは、:: 
    40    OpenPNE SNS側のサーバのデータベースに保存されているデータを指す。 [[br]] 
    41 例えば、「ニックネーム」「プロフィール写真のURL」「フレンドリスト」などである。 
    42  
    43  '''外部サーバ'''とは、:: 
    44    SNSサーバから'''認証情報'''と'''SNSのデータ'''を取得し、SNSとは独立したサービスを提供するサーバである。 
    45  
    46 ----- 
    47  
    48  {{{ 
    49 #!html 
     55<dl style="margin-left: 1em;padding-left: 1em;"> 
     56 
     57<dt><strong>OpenPNE API</strong>とは、</dt> 
     58<dd>SNSサーバ上にある<strong>認証情報</strong>および<strong>SNSのデータ</strong>を、<strong>外部サーバ</strong>に対してHTTP通信により提供するためのAPIである。</dd> 
     59 
     60<dt><strong>認証情報</strong>とは、</dt> 
     61<dd>SNSサーバでユーザが認証済みである事を示す情報である。</dd> 
     62<dt><strong>SNSのデータ</strong>とは、</dt> 
     63 
     64<dd>OpenPNE SNS側のサーバのデータベースに保存されているデータを指す。  
     65例えば、「ニックネーム」「プロフィール写真のURL」「フレンドリスト」などである。</dd> 
     66<dt><strong>外部サーバ</strong>とは、<dt> 
     67<dd>SNSサーバから<strong>認証情報</strong>と<strong>SNSのデータ</strong>を取得し、SNSとは独立したサービスを提供するサーバである。</dd></dl> 
     68 
     69<hr> 
     70 
    5071<h2 id="section2">2. 概要</h2> 
    5172 
    5273<h3 id="section2-1">2.1. 通信主体</h3> 
    53  }}} 
    54  
    55 SNSサーバ(APIサーバ) ⇔ 外部サーバ(APIクライアント) 間のサーバ間通信 
    56  
    57  {{{ 
    58 #!html 
    59  <h3 id="section2-2">2.2. プロトコル</h3> 
    60  }}} 
    61  
    62 XML-RPCの仕様に準拠。文字コード系はUTF-8とする。 
    63  
    64  {{{ 
    65 #!html 
     74<p>SNSサーバ(APIサーバ) ⇔ 外部サーバ(APIクライアント) 間のサーバ間通信</p> 
     75 
     76<h3 id="section2-2">2.2. プロトコル</h3> 
     77<p>XML-RPCの仕様に準拠。文字コード系はUTF-8とする。</p> 
     78 
    6679<h3 id="section2-3">2.3. セキュリティ</h3> 
    67  }}} 
    68  
    69 SNSサーバ、外部サーバ間のAPI通信に対しては、SNSサーバ側(OpenPNEアプリケーション)でIP制限を行う 
    70  
    71 ----- 
    72  
    73 {{{ 
    74 #!html 
     80 
     81<p>SNSサーバ、外部サーバ間のAPI通信に対しては、SNSサーバ側(OpenPNEアプリケーション)でIP制限を行う</p> 
     82 
     83<hr> 
     84 
    7585<h2 id="section3">3. 認証情報の受け渡し</h2> 
    7686 
    7787<h3 id="section3-1">3.1. 概要</h3> 
    78  }}} 
    79  
    80  
    81  1.  SNSサーバ側で認証済みのユーザに対して、以下の値を埋め込んだ外部サーバへのリンクを生成する 
    82    * セッションID(後述) 
    83    * メンバーID 
    84    * リンク生成日時(YYYYMMDDHHMMSS形式) 
    85  1. 外部サーバ側は、受け取ったリクエストをSNSサーバへAPI通信で送る (リンク生成日時が古いものは外部サーバ側で弾いてもよい) 
    86  1. SNSサーバ側は、外部サーバから受け取ったリクエストを検証し結果を返す 
    87  
    88  {{{ 
    89 #!html 
     88 
     89<ol> 
     90<li>SNSサーバ側で認証済みのユーザに対して、以下の値を埋め込んだ外部サーバへのリンクを生成する 
     91  <ul> 
     92  <li>セッションID(後述)</li> 
     93 
     94  <li>メンバーID</li> 
     95  <li>リンク生成日時(YYYYMMDDHHMMSS形式)</li> 
     96 
     97  </ul></li> 
     98<li>外部サーバ側は、受け取ったリクエストをSNSサーバへAPI通信で送る (リンク生成日時が古いものは外部サーバ側で弾いてもよい)</li> 
     99<li>SNSサーバ側は、外部サーバから受け取ったリクエストを検証し結果を返す</li> 
     100</ol> 
     101 
    90102<h3 id="section3-2">3.2. セッションIDの生成方法</h3> 
    91  }}} 
    92  
    93  * APIトークン(SNS側の設定ファイで設定した文字列) 
    94  * メンバーID 
    95  * メンバートークン(後述) 
    96  * リンク生成日時(YYYYMMDDHHMMSS形式) 
    97  
    98  
     103 
     104<ul> 
     105<li>APIトークン(SNS側の設定ファイで設定した文字列)</li> 
     106<li>メンバーID</li> 
     107<li>メンバートークン(後述)</li> 
     108 
     109<li>リンク生成日時(YYYYMMDDHHMMSS形式)</li> 
     110</ul> 
    99111を文字列連結したものをmd5でハッシュ化する。 
    100  {{{ 
    101 #!php 
     112<pre style="padding: 1em;margin: 1em;border: solid 1px #000;background-color: #ddd;"> 
    102113$session_id = md5($api_token . $c_member_id . $c_member_token . $datetime); 
    103 }}} 
    104  
    105  {{{ 
    106 #!html 
     114</pre> 
     115 
    107116<h3 id="section3-3">3.3. メンバートークン</h3> 
    108 }}} 
    109  
    110 メンバーに紐付く値で、SNSサーバが保持する。 
    111  
    112 値はメンバーがSNSにログインする毎に変更する。 
    113  
    114  {{{ 
    115 #!html 
     117 
     118<p>メンバーに紐付く値で、SNSサーバが保持する。</p> 
     119<p>値はメンバーがSNSにログインする毎に変更する。</p> 
     120 
    116121<h3 id="section3-4">3.4. 外部サーバへのURL</h3> 
    117  }}} 
    118  
    119 {{{ 
    120 http://app.example.net/entry?sid=b51a44e6a82cc0d6be9ecadea513c618&amp;mid=237&amp;dt=20060326032450 
    121 }}} 
    122  
    123  {{{ 
    124 #!html 
     122 
     123URL例 
     124<pre style="padding: 1em;margin: 1em;border: solid 1px #000;background-color: #ddd;"> 
     125http://app.example.net/entry?<em>sid=b51a44e6a82cc0d6be9ecadea513c618&amp;mid=237&amp;dt=20060326032450</em> 
     126</pre> 
     127 
    125128<h3 id="section3-5">3.5. 認証API通信</h3> 
    126  }}} 
    127  
    128 === リクエスト例 === 
    129  
    130  {{{ 
    131 #!html 
    132  
    133 <table style="border:1px solid #666666;"> 
    134 <tr><th>URI</th><td>http://sns.example.com/?m=api&amp;a=do_xmlrpc</td></tr> 
    135 <tr><th>encoding</th><td>UTF-8</td></tr> 
    136 <tr><th>methodName</th><td>000_auth</td></tr> 
    137 <tr><th>parameters</th><td style="padding:0px"> 
    138   <table style="margin:-1px;"> 
    139  
    140   <tr><th>要素名</th><th>型</th><th>説明</th></tr> 
    141   <tr><td>sid</td><td>string</td><td>セッションID</td></tr> 
    142   <tr><td>mid</td><td>int</td><td>メンバーID</td></tr> 
    143   <tr><td>dt</td><td>string</td><td>リンク生成日時(YYYYMMDDHHMMSS形式)</td></tr> 
    144  
     129 
     130<table style="border-collapse: collapse;"> 
     131<tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">URI</th><td style="border: solid 1px #000;padding: 5px;">http://sns.example.com/?m=api&amp;a=do_xmlrpc</td></tr> 
     132 
     133<tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">encoding</th><td style="border: solid 1px #000;padding: 5px;">UTF-8</td></tr> 
     134<tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">methodName</th><td style="border: solid 1px #000;padding: 5px;">000_auth</td></tr> 
     135<tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">parameters</th><td style="border: solid 1px #000;padding: 5px;" style="padding:0px"> 
     136 
     137  <table style="border-collapse: collapse;" style="margin:-1px"> 
     138  <tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">要素名</th><th style="border: solid 1px #000;padding: 5px;background: #ddd;">型</th><th style="border: solid 1px #000;padding: 5px;background: #ddd;">説明</th></tr> 
     139  <tr><td style="border: solid 1px #000;padding: 5px;">sid</td><td style="border: solid 1px #000;padding: 5px;">string</td><td style="border: solid 1px #000;padding: 5px;">セッションID</td></tr> 
     140 
     141  <tr><td style="border: solid 1px #000;padding: 5px;">mid</td><td style="border: solid 1px #000;padding: 5px;">int</td><td style="border: solid 1px #000;padding: 5px;">メンバーID</td></tr> 
     142 
     143  <tr><td style="border: solid 1px #000;padding: 5px;">dt</td><td style="border: solid 1px #000;padding: 5px;">string</td><td style="border: solid 1px #000;padding: 5px;">リンク生成日時(YYYYMMDDHHMMSS形式)</td></tr> 
    145144  </table> 
    146145</td></tr> 
    147146</table> 
    148  }}} 
    149  
    150  {{{ 
    151 #!xml 
    152 <?xml version="1.0" encoding="UTF-8"?> 
    153 <methodCall> 
    154 <methodName>000_auth</methodName> 
    155  
    156 <params> 
    157 <param> 
    158 <value><struct> 
    159 <member><name>sid</name> 
    160 <value><string>b51a44e6a82cc0d6be9ecadea513c618</int></value> 
    161  
    162 </member> 
    163 <member><name>mid</name> 
    164 <value><int>237</int></value> 
    165 </member> 
    166 <member><name>dt</name> 
    167  
    168 <value><string>20060326032450</string></value> 
    169 </member> 
    170 </struct></value> 
    171 </param> 
    172 </params> 
    173 </methodCall> 
    174  }}} 
     147 
     148<h4>リクエスト例</h4> 
     149 
     150<dl style="margin-left: 1em;padding-left: 1em;"> 
     151<dt>POST URI</dt> 
     152<dd>http://sns.example.com/?m=api&amp;a=do_xmlrpc</dd> 
     153 
     154</dl> 
     155<pre style="padding: 1em;margin: 1em;border: solid 1px #000;background-color: #ddd;">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; 
     156&lt;methodCall&gt; 
     157&lt;methodName&gt;000_auth&lt;/methodName&gt; 
     158&lt;params&gt; 
     159&lt;param&gt; 
     160 
     161&lt;value&gt;&lt;struct&gt; 
     162&lt;member&gt;&lt;name&gt;sid&lt;/name&gt; 
     163&lt;value&gt;&lt;string&gt;b51a44e6a82cc0d6be9ecadea513c618&lt;/string&gt;&lt;/value&gt; 
     164&lt;/member&gt; 
     165&lt;member&gt;&lt;name&gt;mid&lt;/name&gt; 
     166 
     167&lt;value&gt;&lt;int&gt;237&lt;/int&gt;&lt;/value&gt; 
     168&lt;/member&gt; 
     169&lt;member&gt;&lt;name&gt;dt&lt;/name&gt; 
     170&lt;value&gt;&lt;string&gt;20060326032450&lt;/string&gt;&lt;/value&gt; 
     171 
     172&lt;/member&gt; 
     173&lt;/struct&gt;&lt;/value&gt; 
     174&lt;/param&gt; 
     175&lt;/params&gt; 
     176&lt;/methodCall&gt;</pre> 
    175177 
    176178<p>PHPコード例</p> 
    177179 
    178  {{{ 
    179 #!php 
    180 <?php 
    181 require_once "XML/RPC.php"; 
     180<pre style="padding: 1em;margin: 1em;border: solid 1px #000;background-color: #ddd;">&lt;?php 
     181require_once &quot;XML/RPC.php&quot;; 
    182182... 
    183183$params = array( 
    184     "sid" => $sid
    185     "mid" => intval($mid), 
    186     "dt"  => $dt
     184    &quot;sid&quot; =&gt; strval($sid)
     185    &quot;mid&quot; =&gt; intval($mid), 
     186    &quot;dt&quot;  =&gt; strval($dt)
    187187); 
    188188$params = array(XML_RPC_encode($params)); 
    189 $msg = new XML_RPC_Message("000_auth", $params); 
    190  
    191 $cli = new XML_RPC_Client("/?m=api&amp;a=do_xmlrpc", "sns.example.com"); 
    192 $cli->send($msg); 
     189$msg = new XML_RPC_Message(&quot;000_auth&quot;, $params); 
     190 
     191$cli = new XML_RPC_Client(&quot;/?m=api&amp;a=do_xmlrpc&quot;, &quot;sns.example.com&quot;); 
     192$cli-&gt;send($msg); 
    193193... 
    194 ?> 
    195 }}} 
    196  
    197  
    198 === レスポンス例(成功) === 
    199 メンバーIDを返す。 
    200  
    201  {{{ 
    202 #!xml 
    203 <?xml version="1.0" encoding="UTF-8"?> 
    204 <methodResponse> 
    205   <params> 
    206  
    207     <param> 
    208      <value><int>32</int></value> 
    209     </param> 
    210   </params> 
    211 </methodResponse> 
    212  }}} 
    213  
    214 === レスポンス例(失敗)(ユーザが正常登録状態にない場合) === 
    215  {{{ 
    216 #!xml 
    217 <?xml version="1.0" encoding="UTF-8"?> 
    218 <methodResponse> 
    219 <fault> 
    220   <value> 
    221  
    222     <struct> 
    223       <member> 
    224         <name>faultCode</name> 
    225         <value><int>51</int></value> 
    226  
    227       </member> 
    228       <member> 
    229         <name>faultString</name> 
    230         <value><string></string></value> 
    231  
    232       </member> 
    233     </struct> 
    234   </value> 
    235 </fault> 
    236 </methodResponse> 
    237  }}} 
    238  
    239 ----- 
    240  
    241 {{{ 
    242 #!html 
     194?&gt;</pre> 
     195 
     196<h4>レスポンス例(成功)</h4> 
     197<p>メンバーIDを返す。</p> 
     198<pre style="padding: 1em;margin: 1em;border: solid 1px #000;background-color: #ddd;"> 
     199&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; 
     200&lt;methodResponse&gt; 
     201  &lt;params&gt; 
     202 
     203    &lt;param&gt; 
     204     &lt;value&gt;&lt;int&gt;237&lt;/int&gt;&lt;/value&gt; 
     205    &lt;/param&gt; 
     206  &lt;/params&gt; 
     207&lt;/methodResponse&gt;</pre> 
     208 
     209<h4>レスポンス例(失敗)(ユーザが正常登録状態にない場合)</h4> 
     210<pre style="padding: 1em;margin: 1em;border: solid 1px #000;background-color: #ddd;"> 
     211&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; 
     212&lt;methodResponse&gt; 
     213&lt;fault&gt; 
     214  &lt;value&gt; 
     215 
     216    &lt;struct&gt; 
     217      &lt;member&gt; 
     218        &lt;name&gt;faultCode&lt;/name&gt; 
     219        &lt;value&gt;&lt;int&gt;51&lt;/int&gt;&lt;/value&gt; 
     220 
     221      &lt;/member&gt; 
     222      &lt;member&gt; 
     223        &lt;name&gt;faultString&lt;/name&gt; 
     224        &lt;value&gt;&lt;string&gt;&lt;/string&gt;&lt;/value&gt; 
     225 
     226      &lt;/member&gt; 
     227    &lt;/struct&gt; 
     228  &lt;/value&gt; 
     229&lt;/fault&gt; 
     230&lt;/methodResponse&gt;</pre> 
     231 
     232<hr> 
     233 
    243234<h2 id="section4">4. データ取得</h2> 
    244235 
    245236<h3 id="section4-1">4.1. メソッド名</h3> 
    246237 
    247 <table style="border:1px solid #666666;"> 
     238<table style="border-collapse: collapse;"> 
    248239<tbody> 
    249 <tr><th>methodName</th><th>説明</th></tr> 
    250 <tr><td>1_get_c_member</td><td>メンバー情報取得</td></tr> 
    251 <tr><td>...</td><td>...</td></tr> 
     240<tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">methodName</th><th style="border: solid 1px #000;padding: 5px;background: #ddd;">説明</th></tr> 
     241<tr><td style="border: solid 1px #000;padding: 5px;">001_get_c_member</td><td style="border: solid 1px #000;padding: 5px;">メンバー情報取得</td></tr> 
     242<tr><td style="border: solid 1px #000;padding: 5px;">...</td><td style="border: solid 1px #000;padding: 5px;">...</td></tr> 
    252243</tbody> 
    253244</table> 
    259250<h5>リクエスト </h5> 
    260251 
    261 <table style="border:1px solid #666666;"> 
    262 <tr><th>URI</th><td>http://sns.example.com/?m=api&amp;a=do_xmlrpc</td></tr> 
    263 <tr><th>encoding</th><td>UTF-8</td></tr> 
    264  
    265 <tr><th>methodName</th><td>001_get_c_member</td></tr> 
    266 <tr><th>parameters</th><td style="padding:0px"> 
    267   <table style="margin:-1px"> 
    268   <tr><th>要素名</th><th>型</th><th>説明</th></tr> 
    269   <tr><td>target_c_member_id</td><td>int</td><td>取得対象のメンバーID</td></tr> 
    270  
    271   <tr><td>my_c_member_id</td><td>int</td><td>自分のメンバーID</td></tr> 
     252<table style="border-collapse: collapse;"> 
     253<tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">URI</th><td style="border: solid 1px #000;padding: 5px;">http://sns.example.com/?m=api&amp;a=do_xmlrpc</td></tr> 
     254<tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">encoding</th><td style="border: solid 1px #000;padding: 5px;">UTF-8</td></tr> 
     255 
     256<tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">methodName</th><td style="border: solid 1px #000;padding: 5px;">001_get_c_member</td></tr> 
     257<tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">parameters</th><td style="border: solid 1px #000;padding: 5px;" style="padding:0px"> 
     258  <table style="border-collapse: collapse;" style="margin:-1px"> 
     259  <tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">要素名</th><th style="border: solid 1px #000;padding: 5px;background: #ddd;">型</th><th style="border: solid 1px #000;padding: 5px;background: #ddd;">説明</th></tr> 
     260  <tr><td style="border: solid 1px #000;padding: 5px;">target_c_member_id</td><td style="border: solid 1px #000;padding: 5px;">int</td><td style="border: solid 1px #000;padding: 5px;">取得対象のメンバーID</td></tr> 
     261 
     262  <tr><td style="border: solid 1px #000;padding: 5px;">my_c_member_id</td><td style="border: solid 1px #000;padding: 5px;">int</td><td style="border: solid 1px #000;padding: 5px;">自分のメンバーID</td></tr> 
    272263  </table> 
    273264</td></tr> 
    275266 
    276267<h5>リクエスト例</h5> 
    277 }}} 
    278 3番のメンバーが10番のメンバーを見た場合 
    279  
    280 {{{ 
    281 #!xml 
    282 <?xml version="1.0" encoding="UTF-8"?> 
    283  
    284 <methodCall> 
    285 <methodName>001_get_c_member</methodName> 
    286 <params> 
    287 <param> 
    288 <value><struct> 
    289 <member><name>target_c_member_id</name> 
    290  
    291 <value><int>10</int></value> 
    292 </member> 
    293 <member><name>my_c_member_id</name> 
    294 <value><int>3</int></value> 
    295  
    296 </member> 
    297 </struct></value> 
    298 </param> 
    299 </params> 
    300 </methodCall> 
    301  }}} 
    302  
    303 PHPコード例 
    304  
    305  {{{ 
    306 #!php 
    307 <?php 
    308 require_once "XML/RPC.php"; 
     268<p>3番のメンバーが10番のメンバーを見た場合</p> 
     269 
     270<pre style="padding: 1em;margin: 1em;border: solid 1px #000;background-color: #ddd;">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; 
     271 
     272&lt;methodCall&gt; 
     273&lt;methodName&gt;001_get_c_member&lt;/methodName&gt; 
     274&lt;params&gt; 
     275&lt;param&gt; 
     276&lt;value&gt;&lt;struct&gt; 
     277&lt;member&gt;&lt;name&gt;target_c_member_id&lt;/name&gt; 
     278 
     279&lt;value&gt;&lt;int&gt;10&lt;/int&gt;&lt;/value&gt; 
     280&lt;/member&gt; 
     281&lt;member&gt;&lt;name&gt;my_c_member_id&lt;/name&gt; 
     282&lt;value&gt;&lt;int&gt;3&lt;/int&gt;&lt;/value&gt; 
     283 
     284&lt;/member&gt; 
     285&lt;/struct&gt;&lt;/value&gt; 
     286&lt;/param&gt; 
     287&lt;/params&gt; 
     288&lt;/methodCall&gt;</pre> 
     289 
     290<p>PHPコード例</p> 
     291 
     292<pre style="padding: 1em;margin: 1em;border: solid 1px #000;background-color: #ddd;">&lt;?php 
     293require_once &quot;XML/RPC.php&quot;; 
    309294... 
    310295$params = array( 
    311         "target_c_member_id" => intval($target_c_member_id), 
    312         "my_c_member_id" => intval($my_c_member_id) 
     296        &quot;target_c_member_id&quot; =&gt; intval($target_c_member_id), 
     297        &quot;my_c_member_id&quot;     =&gt; intval($my_c_member_id), 
    313298); 
    314299$params = array(XML_RPC_encode($params)); 
    315 $msg = new XML_RPC_Message("001_get_c_member", $params); 
    316  
    317 $cli = new XML_RPC_Client("/?m=api&amp;a=do_xmlrpc", "sns.example.com"); 
    318 $cli->send($msg); 
     300$msg = new XML_RPC_Message(&quot;001_get_c_member&quot;, $params); 
     301 
     302$cli = new XML_RPC_Client(&quot;/?m=api&amp;a=do_xmlrpc&quot;, &quot;sns.example.com&quot;); 
     303$cli-&gt;send($msg); 
    319304... 
    320 ?> 
    321  }}} 
    322  
    323 {{{ 
    324 #!html 
     305?&gt;</pre> 
     306 
    325307<h5>レスポンス</h5> 
    326 <table style="border:1px solid #666666;"> 
     308<table style="border-collapse: collapse;"> 
    327309<tbody> 
    328 <tr><th colspan="2">要素名</th><th>型</th><th>説明</th></tr> 
    329 <tr><td colspan="2">c_member_id</td><td>int</td><td>メンバーID</td></tr> 
    330 <tr><td colspan="2">nickname</td><td>string</td><td>ニックネーム</td></tr> 
    331  
    332 <tr><td colspan="2">image_url</td><td>string</td><td>メイン画像URL(SNSサーバ上の画像の絶対パス)</td></tr> 
    333 <tr><td colspan="2">image_url_1</td><td>string</td><td>画像1URL(SNSサーバ上の画像の絶対パス)</td></tr> 
    334 <tr><td colspan="2">image_url_2</td><td>string</td><td>画像2URL(SNSサーバ上の画像の絶対パス)</td></tr> 
    335 <tr><td colspan="2">image_url_3</td><td>string</td><td>画像3URL(SNSサーバ上の画像の絶対パス)</td></tr> 
    336 <tr><td colspan="2">birth_year</td><td>int</td><td>誕生年(公開設定による)</td></tr> 
    337  
    338 <tr><td colspan="2">birth_month</td><td>int</td><td>誕生月</td></tr> 
    339 <tr><td colspan="2">birth_day</td><td>int</td><td>誕生日</td></tr> 
    340 <tr><td colspan="2">access_date</td><td>string(date)</td><td>最終ログイン日時</td></tr> 
    341 <tr><td colspan="2">r_date</td><td>string(date)</td><td>SNS登録日時</td></tr> 
    342 <tr><td rowspan="6">profile</td><td colspan=3>---以下プロフィール項目(SNS設定により可変)</td></tr> 
    343  
    344 <tr><td>sex</td><td>string</td><td>性別</td></tr> 
    345 <tr><td>blood_type</td><td>string</td><td>血液型</td></tr> 
    346 <tr><td>pre_addr_pref</td><td>string</td><td>現住所(都道府県)</td></tr> 
    347 <tr><td>old_addr_pref</td><td>string</td><td>出身地(都道府県)</td></tr> 
    348 <tr><td>self_intro</td><td>string</td><td>自己紹介</td></tr> 
    349  
     310<tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;" colspan="2">要素名</th><th style="border: solid 1px #000;padding: 5px;background: #ddd;">型</th><th style="border: solid 1px #000;padding: 5px;background: #ddd;">説明</th></tr> 
     311<tr><td style="border: solid 1px #000;padding: 5px;" colspan="2">c_member_id</td><td style="border: solid 1px #000;padding: 5px;">int</td><td style="border: solid 1px #000;padding: 5px;">メンバーID</td></tr> 
     312<tr><td style="border: solid 1px #000;padding: 5px;" colspan="2">nickname</td><td style="border: solid 1px #000;padding: 5px;">string</td><td style="border: solid 1px #000;padding: 5px;">ニックネーム</td></tr> 
     313 
     314<tr><td style="border: solid 1px #000;padding: 5px;" colspan="2">image_url</td><td style="border: solid 1px #000;padding: 5px;">string</td><td style="border: solid 1px #000;padding: 5px;">画像URL(SNSサーバ上の画像の絶対パス)</td></tr> 
     315<tr><td style="border: solid 1px #000;padding: 5px;" colspan="2">birth_year</td><td style="border: solid 1px #000;padding: 5px;">int</td><td style="border: solid 1px #000;padding: 5px;">誕生年(公開設定による)</td></tr> 
     316<tr><td style="border: solid 1px #000;padding: 5px;" colspan="2">birth_month</td><td style="border: solid 1px #000;padding: 5px;">int</td><td style="border: solid 1px #000;padding: 5px;">誕生月</td></tr> 
     317<tr><td style="border: solid 1px #000;padding: 5px;" colspan="2">birth_day</td><td style="border: solid 1px #000;padding: 5px;">int</td><td style="border: solid 1px #000;padding: 5px;">誕生日</td></tr> 
     318<tr><td style="border: solid 1px #000;padding: 5px;" colspan="2">access_date</td><td style="border: solid 1px #000;padding: 5px;">string(date)</td><td style="border: solid 1px #000;padding: 5px;">最終ログイン日時</td></tr> 
     319 
     320<tr><td style="border: solid 1px #000;padding: 5px;" colspan="2">r_date</td><td style="border: solid 1px #000;padding: 5px;">string(date)</td><td style="border: solid 1px #000;padding: 5px;">SNS登録日時</td></tr> 
     321<tr><td style="border: solid 1px #000;padding: 5px;" rowspan="6">profile</td><td style="border: solid 1px #000;padding: 5px;" colspan=3>---以下プロフィール項目(SNS設定により可変)</td></tr> 
     322<tr><td style="border: solid 1px #000;padding: 5px;">sex</td><td style="border: solid 1px #000;padding: 5px;">string</td><td style="border: solid 1px #000;padding: 5px;">性別</td></tr> 
     323<tr><td style="border: solid 1px #000;padding: 5px;">blood_type</td><td style="border: solid 1px #000;padding: 5px;">string</td><td style="border: solid 1px #000;padding: 5px;">血液型</td></tr> 
     324<tr><td style="border: solid 1px #000;padding: 5px;">pre_addr_pref</td><td style="border: solid 1px #000;padding: 5px;">string</td><td style="border: solid 1px #000;padding: 5px;">現住所(都道府県)</td></tr> 
     325 
     326<tr><td style="border: solid 1px #000;padding: 5px;">old_addr_pref</td><td style="border: solid 1px #000;padding: 5px;">string</td><td style="border: solid 1px #000;padding: 5px;">出身地(都道府県)</td></tr> 
     327<tr><td style="border: solid 1px #000;padding: 5px;">self_intro</td><td style="border: solid 1px #000;padding: 5px;">string</td><td style="border: solid 1px #000;padding: 5px;">自己紹介</td></tr> 
    350328</tbody> 
    351329</table> 
    352  }}} 
    353  
    354 date: YYYYMMDDHHMMSS 
    355  
    356 === レスポンス例 === 
    357  {{{ 
    358 #!xml 
    359 <?xml version="1.0" encoding="UTF-8"?> 
    360 <methodResponse> 
    361  
    362 <params> 
    363 <param> 
    364   <value> 
    365     <struct> 
    366       <member> 
    367         <name>c_member_id</name> 
    368  
    369         <value><int>10</int></value> 
    370       </member> 
    371       <member> 
    372         <name>nickname</name> 
    373  
    374         <value><string>ハチス</string></value> 
    375       </member> 
    376       <member> 
    377         <name>image_url</name> 
    378  
    379         <value> 
    380           <string>http://sns.example.com/img.php?filename=m_10_1133710936.jpg</string> 
    381         </value> 
    382       </member> 
    383       <member> 
    384  
    385         <name>image_url_1</name> 
    386         <value> 
    387           <string>http://sns.example.com/img.php?filename=m_10_1133710936.jpg</string> 
    388         </value> 
    389       </member> 
    390  
    391       <member> 
    392         <name>birth_year</name> 
    393         <value><int>1982</int></value> 
    394       </member> 
    395  
    396       <member> 
    397         <name>birth_month</name> 
    398         <value><int>2</int></value> 
    399       </member> 
    400  
    401       <member> 
    402         <name>birth_day</name> 
    403         <value><int>15</int></value> 
    404       </member> 
    405  
    406       <member> 
    407         <name>access_date</name> 
    408         <value><string>20060116113706</string></value> 
    409       </member> 
    410  
    411       <member> 
    412         <name>r_date</name> 
    413         <value><string>20050817000000</string></value> 
    414       </member> 
    415  
    416       <member> 
    417         <name>profile</name> 
    418         <value> 
    419           <struct> 
    420             <member> 
    421  
    422               <name>sex</name> 
    423               <value><string>男性</string></value> 
    424             </member> 
    425             <member> 
    426  
    427               <name>blood_type</name> 
    428               <value><string>o</string></value> 
    429             </member> 
    430             <member> 
    431  
    432               <name>pre_addr_pref</name> 
    433               <value><string>東京都</string></value> 
    434             </member> 
    435             <member> 
    436  
    437               <name>old_addr_pref</name> 
    438               <value><string>埼玉県</string></value> 
    439             </member> 
    440             <member> 
    441  
    442               <name>self_intro</name> 
    443               <value><string>演劇サークルに入りました。12/14-18に初舞台です。 
    444 毎日稽古で忙しいです。合間をぬって出社します。</string></value> 
    445             </member> 
    446           </struct> 
    447  
    448         </value> 
    449       </member> 
    450     </struct> 
    451   </value> 
    452 </param> 
    453 </params> 
    454 </methodResponse> 
    455  }}} 
    456  
    457 ----- 
    458  
    459 {{{ 
    460 #!html 
    461 <h2 id="section5">5. エラーの場合</h2> 
    462  
    463 <h3 id="section5-1">5.1. エラーコード一覧</h3> 
    464  
    465 <table style="border:1px solid #666666;"> 
    466 <tbody> 
    467 <tr> 
    468 <th>種別</th> 
    469 <th>faultCode</th><th>faultString</th><th>意味</th></tr> 
    470  
    471 <tr> 
    472 <td rowspan="7">XML-RPC</td> 
    473 <td>1</td><td>Unknown method</td><td>サーバが関知しないメソッドの実行を要求された際に返されます。</td></tr> 
    474 <tr> 
    475 <td>2</td><td>Invalid return payload</td><td>このエラーは、実際のところサーバやコードではなくクライアント側で 発生します。しかし、これはサーバが自分で理解できない何かを返したことを 示します。</td></tr> 
    476 <tr> 
    477 <td>3</td><td>Incorrect parameters</td><td>サーバがメソッドに対応したシグネチャを保持しており、クライアントから 渡されたパラメータがいずれのシグネチャにも一致しなかった際に発生します。</td></tr> 
    478  
    479 <tr> 
    480 <td>4</td><td>Can't introspect: method unknown</td><td>このエラーは、組み込みの system.*() メソッドから 発生するもので、サーバ上で未定義のメソッドを実行しようとした際に起こります。</td></tr> 
    481 <tr> 
    482 <td>5</td><td>Didn't receive 200 OK from remote server</td><td>このエラーは、サーバからの応答として HTTP/1.1 200 OK が戻ってこなかった際に クライアント側で発生します。エラーの詳細な情報は、上のメッセージの最後に 付け加えられます。</td></tr> 
    483 <tr> 
    484 <td>6</td><td>The requested method didn't return an XML_RPC_Response object.</td><td>&nbsp;</td></tr> 
    485 <tr> 
    486 <td>7</td><td>Invalid request payload</td><td>&nbsp;</td></tr> 
    487  
    488 <tr> 
    489 <td rowspan="9">OpenPNE</td> 
    490 <td>51</td><td>''</td><td>ユーザが正常登録状態にない</td></tr> 
    491 <tr> 
    492 <td>52</td><td>''</td><td>ユーザが特定できない</td></tr> 
    493 <tr> 
    494 <td>53</td><td>''</td><td>データベースに接続できない</td></tr> 
    495  
    496 <tr> 
    497 <td>54</td><td>''</td><td>リクエストコマンドコードが不正</td></tr> 
    498 <tr> 
    499 <td>55</td><td>''</td><td>リクエストパラメータに不足がある</td></tr> 
    500 <tr> 
    501 <td>56</td><td>''</td><td>データベースに存在しないデータを取得しようとしている</td></tr> 
    502 <tr> 
    503 <td>57</td><td>''</td><td>データの取得権限がない</td></tr> 
    504  
    505 <tr> 
    506 <td>58</td><td>''</td><td>サーバ側不特定エラー、もしくはメンテナンス中</td></tr> 
    507 <tr> 
    508 <td>59</td><td>''</td><td>クライアント側不特定エラー</td></tr> 
    509 <tr> 
    510 <td rowspan="22">XML</td> 
    511 <td>100</td><td>?</td><td>XML_ERROR_NONE</td></tr> 
    512  
    513 <tr> 
    514 <td>101</td><td>?</td><td>XML_ERROR_NO_MEMORY</td></tr> 
    515 <tr> 
    516 <td>102</td><td>?</td><td>XML_ERROR_SYNTAX</td></tr> 
    517 <tr> 
    518 <td>103</td><td>?</td><td>XML_ERROR_NO_ELEMENTS</td></tr> 
    519 <tr> 
    520 <td>104</td><td>?</td><td>XML_ERROR_INVALID_TOKEN</td></tr> 
    521  
    522 <tr> 
    523 <td>105</td><td>?</td><td>XML_ERROR_UNCLOSED_TOKEN</td></tr> 
    524 <tr> 
    525 <td>106</td><td>?</td><td>XML_ERROR_PARTIAL_CHAR</td></tr> 
    526 <tr> 
    527 <td>107</td><td>?</td><td>XML_ERROR_TAG_MISMATCH</td></tr> 
    528 <tr> 
    529 <td>108</td><td>?</td><td>XML_ERROR_DUPLICATE_ATTRIBUTE</td></tr> 
    530  
    531 <tr> 
    532 <td>109</td><td>?</td><td>XML_ERROR_JUNK_AFTER_DOC_ELEMENT</td></tr> 
    533 <tr> 
    534 <td>110</td><td>?</td><td>XML_ERROR_PARAM_ENTITY_REF</td></tr> 
    535 <tr> 
    536 <td>111</td><td>?</td><td>XML_ERROR_UNDEFINED_ENTITY</td></tr> 
    537 <tr> 
    538 <td>112</td><td>?</td><td>XML_ERROR_RECURSIVE_ENTITY_REF</td></tr> 
    539  
    540 <tr> 
    541 <td>113</td><td>?</td><td>XML_ERROR_ASYNC_ENTITY</td></tr> 
    542 <tr> 
    543 <td>114</td><td>?</td><td>XML_ERROR_BAD_CHAR_REF</td></tr> 
    544 <tr> 
    545 <td>115</td><td>?</td><td>XML_ERROR_BINARY_ENTITY_REF</td></tr> 
    546 <tr> 
    547 <td>116</td><td>?</td><td>XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF</td></tr> 
    548  
    549 <tr> 
    550 <td>117</td><td>?</td><td>XML_ERROR_MISPLACED_XML_PI</td></tr> 
    551 <tr> 
    552 <td>118</td><td>?</td><td>XML_ERROR_UNKNOWN_ENCODING</td></tr> 
    553 <tr> 
    554 <td>119</td><td>?</td><td>XML_ERROR_INCORRECT_ENCODING</td></tr> 
    555 <tr> 
    556 <td>120</td><td>?</td><td>XML_ERROR_UNCLOSED_CDATA_SECTION</td></tr> 
    557  
    558 <tr> 
    559 <td>121</td><td>?</td><td>XML_ERROR_EXTERNAL_ENTITY_HANDLING</td></tr></tbody> 
     330 
     331<p>date: YYYYMMDDHHMMSS</p> 
     332 
     333<h5>レスポンス例</h5> 
     334<pre style="padding: 1em;margin: 1em;border: solid 1px #000;background-color: #ddd;">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; 
     335 
     336&lt;methodResponse&gt; 
     337&lt;params&gt; 
     338&lt;param&gt; 
     339  &lt;value&gt; 
     340    &lt;struct&gt; 
     341      &lt;member&gt; 
     342        &lt;name&gt;c_member_id&lt;/name&gt; 
     343 
     344        &lt;value&gt;&lt;int&gt;10&lt;/int&gt;&lt;/value&gt; 
     345      &lt;/member&gt; 
     346      &lt;member&gt; 
     347        &lt;name&gt;nickname&lt;/name&gt; 
     348 
     349        &lt;value&gt;&lt;string&gt;ハチス&lt;/string&gt;&lt;/value&gt; 
     350      &lt;/member&gt; 
     351      &lt;member&gt; 
     352        &lt;name&gt;image_url&lt;/name&gt; 
     353 
     354        &lt;value&gt; 
     355          &lt;string&gt;http://sns.example.com/img.php?filename=m_10_1133710936.jpg&lt;/string&gt; 
     356        &lt;/value&gt; 
     357      &lt;/member&gt; 
     358      &lt;member&gt; 
     359 
     360        &lt;name&gt;birth_year&lt;/name&gt; 
     361        &lt;value&gt;&lt;int&gt;1982&lt;/int&gt;&lt;/value&gt; 
     362      &lt;/member&gt; 
     363      &lt;member&gt; 
     364 
     365        &lt;name&gt;birth_month&lt;/name&gt; 
     366        &lt;value&gt;&lt;int&gt;2&lt;/int&gt;&lt;/value&gt; 
     367      &lt;/member&gt; 
     368      &lt;member&gt; 
     369 
     370        &lt;name&gt;birth_day&lt;/name&gt; 
     371        &lt;value&gt;&lt;int&gt;15&lt;/int&gt;&lt;/value&gt; 
     372      &lt;/member&gt; 
     373      &lt;member&gt; 
     374 
     375        &lt;name&gt;access_date&lt;/name&gt; 
     376        &lt;value&gt;&lt;string&gt;20060116113706&lt;/string&gt;&lt;/value&gt; 
     377      &lt;/member&gt; 
     378      &lt;member&gt; 
     379 
     380        &lt;name&gt;r_date&lt;/name&gt; 
     381        &lt;value&gt;&lt;string&gt;20050817000000&lt;/string&gt;&lt;/value&gt; 
     382      &lt;/member&gt; 
     383      &lt;member&gt; 
     384 
     385        &lt;name&gt;profile&lt;/name&gt; 
     386        &lt;value&gt; 
     387          &lt;struct&gt; 
     388            &lt;member&gt; 
     389              &lt;name&gt;sex&lt;/name&gt; 
     390 
     391              &lt;value&gt;&lt;string&gt;男性&lt;/string&gt;&lt;/value&gt; 
     392            &lt;/member&gt; 
     393            &lt;member&gt; 
     394              &lt;name&gt;blood_type&lt;/name&gt; 
     395 
     396              &lt;value&gt;&lt;string&gt;o&lt;/string&gt;&lt;/value&gt; 
     397            &lt;/member&gt; 
     398            &lt;member&gt; 
     399              &lt;name&gt;pre_addr_pref&lt;/name&gt; 
     400 
     401              &lt;value&gt;&lt;string&gt;東京都&lt;/string&gt;&lt;/value&gt; 
     402            &lt;/member&gt; 
     403            &lt;member&gt; 
     404              &lt;name&gt;old_addr_pref&lt;/name&gt; 
     405 
     406              &lt;value&gt;&lt;string&gt;埼玉県&lt;/string&gt;&lt;/value&gt; 
     407            &lt;/member&gt; 
     408            &lt;member&gt; 
     409              &lt;name&gt;self_intro&lt;/name&gt; 
     410 
     411              &lt;value&gt;&lt;string&gt;演劇サークルに入りました。12/14-18に初舞台です。 
     412毎日稽古で忙しいです。合間をぬって出社します。&lt;/string&gt;&lt;/value&gt; 
     413            &lt;/member&gt; 
     414          &lt;/struct&gt; 
     415        &lt;/value&gt; 
     416      &lt;/member&gt; 
     417 
     418    &lt;/struct&gt; 
     419  &lt;/value&gt; 
     420&lt;/param&gt; 
     421&lt;/params&gt; 
     422&lt;/methodResponse&gt;</pre> 
     423 
     424<hr> 
     425 
     426<h2 id="section5">5. ポイント</h2> 
     427 
     428<h3 id="section5-1">5.1. ポイント加算(減算)通信</h3> 
     429 
     430<h4>リクエスト</h4> 
     431 
     432<table style="border-collapse: collapse;"> 
     433 
     434<tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">URI</th><td style="border: solid 1px #000;padding: 5px;">http://sns.example.com/?m=api&amp;a=do_xmlrpc</td></tr> 
     435<tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">encoding</th><td style="border: solid 1px #000;padding: 5px;">UTF-8</td></tr> 
     436<tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">methodName</th><td style="border: solid 1px #000;padding: 5px;">101_add_point</td></tr> 
     437 
     438<tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">parameters</th><td style="border: solid 1px #000;padding: 5px;" style="padding:0px"> 
     439  <table style="border-collapse: collapse;" style="margin:-1px"> 
     440  <tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">要素名</th><th style="border: solid 1px #000;padding: 5px;background: #ddd;">型</th><th style="border: solid 1px #000;padding: 5px;background: #ddd;">説明</th></tr> 
     441  <tr><td style="border: solid 1px #000;padding: 5px;">c_member_id <font color="red">*</font></td><td style="border: solid 1px #000;padding: 5px;">int</td><td style="border: solid 1px #000;padding: 5px;">ポイント操作対象のc_member_id</td></tr> 
     442  <tr><td style="border: solid 1px #000;padding: 5px;">point <font color="red">*</font></td><td style="border: solid 1px #000;padding: 5px;">int</td><td style="border: solid 1px #000;padding: 5px;">ポイント増分(負の数の場合は減算)</td></tr> 
     443 
     444  <tr><td style="border: solid 1px #000;padding: 5px;">tags</td><td style="border: solid 1px #000;padding: 5px;">array</td><td style="border: solid 1px #000;padding: 5px;">タグ情報(複数指定可能)</td></tr> 
     445  <tr><td style="border: solid 1px #000;padding: 5px;">memo</td><td style="border: solid 1px #000;padding: 5px;">string</td><td style="border: solid 1px #000;padding: 5px;">メモ</td></tr> 
     446  </table></td></tr> 
    560447</table> 
    561  
    562 <h3 id="section5-2">5.2. レスポンス例</h3> 
     448<small><font color="red">*</font> : 必須項目</small> 
     449 
     450<h4>レスポンス</h4> 
     451<ul> 
     452<li>成功した場合、総ポイント残高を返す。</li> 
     453 
     454<li>失敗した場合、エラーコードとエラーメッセージを返す。</li> 
     455</ul> 
     456 
     457<h3 id="section5-2">5.2. ポイント残高照会通信</h3> 
     458 
     459<h4>リクエスト</h4> 
     460 
     461<table style="border-collapse: collapse;"> 
     462<tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">URI</th><td style="border: solid 1px #000;padding: 5px;">http://sns.example.com/?m=api&amp;a=do_xmlrpc</td></tr> 
     463<tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">encoding</th><td style="border: solid 1px #000;padding: 5px;">UTF-8</td></tr> 
     464<tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">methodName</th><td style="border: solid 1px #000;padding: 5px;">002_get_member_point</td></tr> 
     465<tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">parameters</th><td style="border: solid 1px #000;padding: 5px;" style="padding:0px"> 
     466  <table style="border-collapse: collapse;" style="margin:-1px"> 
     467  <tr><th style="border: solid 1px #000;padding: 5px;background: #ddd;">要素名</th><th style="border: solid 1px #000;padding: 5px;background: #ddd;">型</th><th style="border: solid 1px #000;padding: 5px;background: #ddd;">説明</th></tr> 
     468 
     469  <tr><td style="border: solid 1px #000;padding: 5px;">c_member_id <font color="red">*</font></td><td style="border: solid 1px #000;padding: 5px;">int</td><td style="border: solid 1px #000;padding: 5px;">ポイント照会対象のc_member_id</td></tr> 
     470  </table></td></tr> 
     471</table> 
     472<small><font color="red">*</font> : 必須項目</small> 
     473 
     474<h4>レスポンス</h4> 
     475<ul> 
     476 
     477<li>成功した場合、総ポイント残高を返す。</li> 
     478<li>失敗した場合、エラーコードとエラーメッセージを返す。</li> 
     479</ul> 
     480 
     481<hr> 
     482 
     483<h2 id="section6">6. エラーの場合</h2> 
     484 
     485<h3 id="section6-1">6.1. エラーコード一覧</h3> 
     486 
     487<div> 
     488<table style="border-collapse: collapse;"> 
     489<tr> 
     490 
     491<th style="border: solid 1px #000;padding: 5px;background: #ddd;">種別</th> 
     492<th style="border: solid 1px #000;padding: 5px;background: #ddd;">faultCode</th><th style="border: solid 1px #000;padding: 5px;background: #ddd;">faultString</th><th style="border: solid 1px #000;padding: 5px;background: #ddd;">意味</th></tr> 
     493<tr> 
     494<td style="border: solid 1px #000;padding: 5px;" rowspan="7">XML-RPC</td> 
     495<td style="border: solid 1px #000;padding: 5px;">1</td><td style="border: solid 1px #000;padding: 5px;">Unknown method</td><td style="border: solid 1px #000;padding: 5px;">サーバが関知しないメソッドの実行を要求された際に返されます。</td></tr> 
     496<tr> 
     497<td style="border: solid 1px #000;padding: 5px;">2</td><td style="border: solid 1px #000;padding: 5px;">Invalid return payload</td><td style="border: solid 1px #000;padding: 5px;">このエラーは、実際のところサーバやコードではなくクライアント側で 発生します。しかし、これはサーバが自分で理解できない何かを返したことを 示します。</td></tr> 
     498 
     499<tr> 
     500<td style="border: solid 1px #000;padding: 5px;">3</td><td style="border: solid 1px #000;padding: 5px;">Incorrect parameters</td><td style="border: solid 1px #000;padding: 5px;">サーバがメソッドに対応したシグネチャを保持しており、クライアントから 渡されたパラメータがいずれのシグネチャにも一致しなかった際に発生します。</td></tr> 
     501<tr> 
     502<td style="border: solid 1px #000;padding: 5px;">4</td><td style="border: solid 1px #000;padding: 5px;">Can't introspect: method unknown</td><td style="border: solid 1px #000;padding: 5px;">このエラーは、組み込みの system.*() メソッドから 発生するもので、サーバ上で未定義のメソッドを実行しようとした際に起こります。</td></tr> 
     503<tr> 
     504<td style="border: solid 1px #000;padding: 5px;">5</td><td style="border: solid 1px #000;padding: 5px;">Didn't receive 200 OK from remote server</td><td style="border: solid 1px #000;padding: 5px;">このエラーは、サーバからの応答として HTTP/1.1 200 OK が戻ってこなかった際に クライアント側で発生します。エラーの詳細な情報は、上のメッセージの最後に 付け加えられます。</td></tr> 
     505<tr> 
     506<td style="border: solid 1px #000;padding: 5px;">6</td><td style="border: solid 1px #000;padding: 5px;">The requested method didn't return an XML_RPC_Response object.</td><td style="border: solid 1px #000;padding: 5px;">&nbsp;</td></tr> 
     507 
     508<tr> 
     509<td style="border: solid 1px #000;padding: 5px;">7</td><td style="border: solid 1px #000;padding: 5px;">Invalid request payload</td><td style="border: solid 1px #000;padding: 5px;">&nbsp;</td></tr> 
     510<tr> 
     511<td style="border: solid 1px #000;padding: 5px;" rowspan="9">OpenPNE</td> 
     512<td style="border: solid 1px #000;padding: 5px;">51</td><td style="border: solid 1px #000;padding: 5px;">''</td><td style="border: solid 1px #000;padding: 5px;">ユーザが正常登録状態にない</td></tr> 
     513<tr> 
     514<td style="border: solid 1px #000;padding: 5px;">52</td><td style="border: solid 1px #000;padding: 5px;">''</td><td style="border: solid 1px #000;padding: 5px;">ユーザが特定できない</td></tr> 
     515<tr> 
     516 
     517<td style="border: solid 1px #000;padding: 5px;">53</td><td style="border: solid 1px #000;padding: 5px;">''</td><td style="border: solid 1px #000;padding: 5px;">データベースに接続できない</td></tr> 
     518<tr> 
     519<td style="border: solid 1px #000;padding: 5px;">54</td><td style="border: solid 1px #000;padding: 5px;">''</td><td style="border: solid 1px #000;padding: 5px;">リクエストコマンドコードが不正</td></tr> 
     520<tr> 
     521<td style="border: solid 1px #000;padding: 5px;">55</td><td style="border: solid 1px #000;padding: 5px;">''</td><td style="border: solid 1px #000;padding: 5px;">リクエストパラメータに不足がある</td></tr> 
     522<tr> 
     523<td style="border: solid 1px #000;padding: 5px;">56</td><td style="border: solid 1px #000;padding: 5px;">''</td><td style="border: solid 1px #000;padding: 5px;">データベースに存在しないデータを取得しようとしている</td></tr> 
     524 
     525<tr> 
     526<td style="border: solid 1px #000;padding: 5px;">57</td><td style="border: solid 1px #000;padding: 5px;">''</td><td style="border: solid 1px #000;padding: 5px;">データの取得権限がない</td></tr> 
     527<tr> 
     528<td style="border: solid 1px #000;padding: 5px;">58</td><td style="border: solid 1px #000;padding: 5px;">''</td><td style="border: solid 1px #000;padding: 5px;">サーバ側不特定エラー、もしくはメンテナンス中</td></tr> 
     529<tr> 
     530<td style="border: solid 1px #000;padding: 5px;">59</td><td style="border: solid 1px #000;padding: 5px;">''</td><td style="border: solid 1px #000;padding: 5px;">クライアント側不特定エラー</td></tr> 
     531<tr> 
     532<td style="border: solid 1px #000;padding: 5px;" rowspan="22">XML</td> 
     533 
     534<td style="border: solid 1px #000;padding: 5px;">100</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_NONE</td></tr> 
     535<tr> 
     536<td style="border: solid 1px #000;padding: 5px;">101</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_NO_MEMORY</td></tr> 
     537<tr> 
     538<td style="border: solid 1px #000;padding: 5px;">102</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_SYNTAX</td></tr> 
     539<tr> 
     540<td style="border: solid 1px #000;padding: 5px;">103</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_NO_ELEMENTS</td></tr> 
     541 
     542<tr> 
     543<td style="border: solid 1px #000;padding: 5px;">104</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_INVALID_TOKEN</td></tr> 
     544<tr> 
     545<td style="border: solid 1px #000;padding: 5px;">105</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_UNCLOSED_TOKEN</td></tr> 
     546<tr> 
     547<td style="border: solid 1px #000;padding: 5px;">106</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_PARTIAL_CHAR</td></tr> 
     548<tr> 
     549<td style="border: solid 1px #000;padding: 5px;">107</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_TAG_MISMATCH</td></tr> 
     550 
     551<tr> 
     552<td style="border: solid 1px #000;padding: 5px;">108</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_DUPLICATE_ATTRIBUTE</td></tr> 
     553<tr> 
     554<td style="border: solid 1px #000;padding: 5px;">109</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_JUNK_AFTER_DOC_ELEMENT</td></tr> 
     555<tr> 
     556<td style="border: solid 1px #000;padding: 5px;">110</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_PARAM_ENTITY_REF</td></tr> 
     557<tr> 
     558<td style="border: solid 1px #000;padding: 5px;">111</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_UNDEFINED_ENTITY</td></tr> 
     559 
     560<tr> 
     561<td style="border: solid 1px #000;padding: 5px;">112</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_RECURSIVE_ENTITY_REF</td></tr> 
     562<tr> 
     563<td style="border: solid 1px #000;padding: 5px;">113</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_ASYNC_ENTITY</td></tr> 
     564<tr> 
     565<td style="border: solid 1px #000;padding: 5px;">114</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_BAD_CHAR_REF</td></tr> 
     566<tr> 
     567<td style="border: solid 1px #000;padding: 5px;">115</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_BINARY_ENTITY_REF</td></tr> 
     568 
     569<tr> 
     570<td style="border: solid 1px #000;padding: 5px;">116</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF</td></tr> 
     571<tr> 
     572<td style="border: solid 1px #000;padding: 5px;">117</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_MISPLACED_XML_PI</td></tr> 
     573<tr> 
     574<td style="border: solid 1px #000;padding: 5px;">118</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_UNKNOWN_ENCODING</td></tr> 
     575<tr> 
     576<td style="border: solid 1px #000;padding: 5px;">119</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_INCORRECT_ENCODING</td></tr> 
     577 
     578<tr> 
     579<td style="border: solid 1px #000;padding: 5px;">120</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_UNCLOSED_CDATA_SECTION</td></tr> 
     580<tr> 
     581<td style="border: solid 1px #000;padding: 5px;">121</td><td style="border: solid 1px #000;padding: 5px;">?</td><td style="border: solid 1px #000;padding: 5px;">XML_ERROR_EXTERNAL_ENTITY_HANDLING</td></tr> 
     582</table> 
     583</div> 
     584 
     585<h3 id="section6-2">6.2. レスポンス例</h3> 
     586<p>リクエストパラメータに不足がある場合</p> 
     587 
     588<pre style="padding: 1em;margin: 1em;border: solid 1px #000;background-color: #ddd;">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; 
     589&lt;methodResponse&gt; 
     590&lt;fault&gt; 
     591  &lt;value&gt; 
     592    &lt;struct&gt; 
     593 
     594      &lt;member&gt; 
     595        &lt;name&gt;faultCode&lt;/name&gt; 
     596        &lt;value&gt;&lt;int&gt;3&lt;/int&gt;&lt;/value&gt; 
     597      &lt;/member&gt; 
     598 
     599      &lt;member&gt; 
     600        &lt;name&gt;faultString&lt;/name&gt; 
     601        &lt;value&gt;&lt;string&gt;Incorrect parameters passed to method: Signature permits 1 parameters but the request had 0&lt;/string&gt;&lt;/value&gt; 
     602      &lt;/member&gt; 
     603 
     604    &lt;/struct&gt; 
     605  &lt;/value&gt; 
     606&lt;/fault&gt; 
     607&lt;/methodResponse&gt;</pre> 
     608 
     609<hr> 
     610 
     611<h2 id="section7">7. 参考URL</h2> 
     612<ul> 
     613<li>XML-RPC Specification <a href="http://www.xmlrpc.com/spec">http://www.xmlrpc.com/spec</a> 
     614 
     615<li>同日本語版 <a href="http://lowlife.jp/yasusii/stories/9.html">http://lowlife.jp/yasusii/stories/9.html</a>  
     616<li>PEAR::XML_RPC <a href="http://pear.php.net/manual/ja/package.webservices.xml-rpc.php">http://pear.php.net/manual/ja/package.webservices.xml-rpc.php</a></li> 
     617 
     618</ul> 
    563619}}} 
    564  
    565 リクエストパラメータに不足がある場合 
    566  
    567 {{{ 
    568 #!xml 
    569 <?xml version="1.0" encoding="UTF-8"?> 
    570  
    571 <methodResponse> 
    572 <fault> 
    573   <value> 
    574     <struct> 
    575       <member> 
    576         <name>faultCode</name> 
    577  
    578         <value><int>3</int></value> 
    579       </member> 
    580       <member> 
    581         <name>faultString</name> 
    582  
    583         <value><string>Incorrect parameters passed to method: Signature permits 1 parameters but the request had 0</string></value> 
    584       </member> 
    585     </struct> 
    586   </value> 
    587 </fault> 
    588  
    589 </methodResponse> 
    590 }}} 
    591  
    592 ----- 
    593 {{{ 
    594 #!html 
    595 <h2 id="section6">6. 参考URL</h2> 
    596 }}} 
    597  
    598  * XML-RPC Specification http://www.xmlrpc.com/spec/ 
    599  * 同日本語版 http://lowlife.jp/yasusii/stories/9.html 
    600  * PEAR::XML_RPC  
    601  
    602 [wiki:OpenPNEAPI 上に戻る]