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 >