[Codeigniter-users] [質問] GREEのOAuth認証のプログラムが動きません。

Back to archive index

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
>




Codeigniter-users メーリングリストの案内
Back to archive index