okuya****@workg*****
okuya****@workg*****
2011年 5月 17日 (火) 13:53:52 JST
おく@Workgroupです。
追加で、people API です。
他のAPI はjson_encodeしてPOSTになる程度の違いなので、
同様の実装でOKですが、
ステータスが、200だったり201だったりしてたので、
しばらく悩みました・・
public function people($guid = '@me', $selector = '@self', $fields =
null, $pid = null, $count = 10, $startIndex = null, $filterOpt = null)
{
log_message('debug', "Gree_Platform::people");
if(isset($_SERVER['HTTP_AUTHORIZATION']))
{
// parse user request
$user_request = OAuthRequest::from_request(null, null, null);
$oauth_token = $user_request->get_parameter('oauth_token');
$oauth_token_secret = $user_request->get_parameter('oauth_token_secret');
$oauth_signature = $user_request->get_parameter('oauth_signature');
$opensocial_viewer_id = $user_request->get_parameter('opensocial_viewer_id');
$xoauth_requestor_id = $opensocial_viewer_id;
// api endpoint
$endpoint_url = $this->oauth_conf['api.endpoint_url'] .
'/people/'.$guid.'/'.$selector.($pid?'/'.$pid:'');
$http_method = 'GET';
// url query
$request_data = array();
$request_data['xoauth_requestor_id'] = $xoauth_requestor_id;
if($fields)
{
$request_data['fields'] = $fields;
}
if(in_array($selector, array('@friends', '@all')))
{
$request_data['count'] = $count;
if($startIndex)
{
$request_data['startIndex'] = $startIndex;
}
if($filterOpt)
{
foreach($filterOpt as $k => $v)
{
$request_data[$k] = $v;
}
}
}
// sign request
$signature_method = new OAuthSignatureMethod_HMAC_SHA1();
$oauth_consumer = new OAuthConsumer($this->oauth_conf['consumer_key'],
$this->oauth_conf['consumer_secret']);
$access_token = new OAuthToken($oauth_token, $oauth_token_secret);
$oauth_request =
OAuthRequest::from_consumer_and_token($oauth_consumer, $access_token,
$http_method, $endpoint_url, $request_data);
$oauth_request->sign_request($signature_method, $oauth_consumer,
$access_token);
// get header
$authorization_header_string = $oauth_request->to_header();
$authorization_header = substr($authorization_header_string,
strlen('Authorization:'));
$http_options = array('timeout' => '10');
$http_request = new
HTTP_Request2($endpoint_url.'?'.http_build_query($request_data),
HTTP_Request2::METHOD_GET, $http_options);
$http_request->setHeader('Content-Type', "application/json; charset=utf8");
$http_request->setHeader('Authorization', $authorization_header);
// send api request
$response = $http_request->send();
if (200 == $response->getStatus()) {
// get api result
$response_code = $response->getStatus();
$response_body = json_decode($response->getBody(), true);
return $response_body;
} else {
//header('HTTP/1.1 500 Internal Server Error');
//echo "failed", "\n";
log_message('debug', var_export($response, true));
return false;
}
}
}
2011年5月17日13:17 HAMAGUCHI Seiji <makot****@dive-*****>:
> ドトールのコーヒーってやっぱりおいしいですね。
> 濱口@スマイルロジックです。
>
> 冷静に自分のソースを読んでいたら、typoを発見しました。
> でも、まだエラーが・・・。
>
> A PHP Error was encountered
> Severity: 8192
> Message: Assigning the return value of new by reference is deprecated
> Filename: HTTP/Request.php
> Line Number: 402
>
> んーEnglishページでは、エラーを抑制すれば良いんじゃね。的な事が書かれていますが、
> もう少し探求してみます。自分の欲しい結果に到達していませんし。
>
> 人間、熱くなるとダメだな。
>
> --
> Makoto / HAMAGUCHI Seiji
> makot****@dive-*****
> http://smilelogic.jp/makoto/
> http://twitter.com/mako10z/
> <!-
> 個人事業主: スマイルロジック(smileLogic)
> mail: hamag****@smile*****
> web: http://smilelogic.jp/
> titter : http://twitter.com/smilelogic_jp/
> -!>
>
> _______________________________________________
> Codeigniter-users mailing list
> Codei****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>