Last active
March 6, 2017 11:09
-
-
Save upsilon/9a3ad8fb319276519ef90abe5f472235 to your computer and use it in GitHub Desktop.
opWebAPIPlugin でメンバーID 1 のプロフィールを取得するサンプル
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// https://oauth.googlecode.com/svn/code/php/OAuth.php を使用する | |
require_once __DIR__.'/OAuth.php'; | |
define('BASE_URL', 'http://sns.example.com'); | |
// http://sns.example.com/pc_backend.php/connection/new で取得できる | |
define('CONSUMER_KEY', '8LJ75AjDVF6t0Seh'); | |
define('CONSUMER_SECRET', '5HIahbSn3Dh_-Cb#aQ7?b_D3JzgyfmG#'); | |
// 設定ここまで | |
function execRequest(OAuthRequest $request) | |
{ | |
$curl = curl_init(); | |
if ($request->get_normalized_http_method() === 'GET') | |
{ | |
curl_setopt($curl, CURLOPT_URL, $request->to_url()); | |
} | |
else | |
{ | |
curl_setopt($curl, CURLOPT_URL, $request->get_normalized_http_url()); | |
curl_setopt($curl, CURLOPT_POST, true); | |
curl_setopt($curl, CURLOPT_POSTFIELDS, $request->to_postdata()); | |
} | |
curl_setopt($curl, CURLOPT_HTTPHEADER, array($request->to_header())); | |
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); | |
$responseText = curl_exec($curl); | |
curl_close($curl); | |
return $responseText; | |
} | |
function fetchOAuthToken($url, OAuthToken $requestToken = null, array $params = array()) | |
{ | |
global $consumer, $signatureMethod; | |
$request = OAuthRequest::from_consumer_and_token($consumer, $requestToken, 'POST', $url, $params); | |
$request->sign_request($signatureMethod, $consumer, $requestToken); | |
$responseText = execRequest($request); | |
parse_str($responseText, $responseArray); | |
return new OAuthToken($responseArray['oauth_token'], $responseArray['oauth_token_secret']); | |
} | |
$consumer = new OAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); | |
$signatureMethod = new OAuthSignatureMethod_HMAC_SHA1(); | |
$requestTokenUrl = BASE_URL.'/pc_backend.php/oauth/request_token'; | |
$requestToken = fetchOAuthToken($requestTokenUrl, null, array('oauth_callback' => 'oob')); | |
$authorizeUrl = BASE_URL.'/pc_backend.php/oauth/authorize?oauth_token='.$requestToken->key; | |
echo "Authorize URL: ${authorizeUrl}\n"; | |
echo 'PIN Code > '; | |
$input = rtrim(fgets(STDIN), "\n"); | |
// https://redmine.openpne.jp/issues/3232 のバグが修正済みである必要がある | |
$accessTokenUrl = BASE_URL.'/pc_backend.php/oauth/access_token'; | |
$accessToken = fetchOAuthToken($accessTokenUrl, $requestToken, array('oauth_verifier' => $input)); | |
$memberFeedUrl = BASE_URL.'/api.php/feeds/member/1'; | |
$request = OAuthRequest::from_consumer_and_token($consumer, $accessToken, 'GET', $memberFeedUrl, array('token_type' => 'admin')); | |
$request->sign_request($signatureMethod, $consumer, $accessToken); | |
echo execRequest($request); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment