ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Changes between Version 3 and Version 4 of OpenPNEAPI


Ignore:
Timestamp:
Mar 15, 2007, 3:31:07 PM (12 years ago)
Author:
sakai
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 上に戻る]