2012-03-30 12 views
2

oauth認証のためにlinkedinからクイックスタートガイドを試しています。私はすでにoauthライブラリをインストールしています。私が下のコードを実行すると、// ask for the pinの後に出力が得られません。 echo STDINを実行すると、ブラウザは文字通りSTDINの値の代わりにSTDINをレンダリングします。 quick start guideにリンクされているようにピンを入力するフィールドが表示されないのはなぜですか?PHP oauth for linkedin

クイックスタートガイドのコードは次のとおりです。私は自分自身でAPIキーを置き換えました。

<?php 

// TODO change these to your API key and secret 
define("API_CONSUMER_KEY", "xxxxxxxxxxxx"); 
define("API_CONSUMER_SECRET", "xxxxxxxxxxxx"); 

// create a new instance of the OAuth PECL extension class 
$oauth = new OAuth(API_CONSUMER_KEY, API_CONSUMER_SECRET); 

// get our request token 
$api_url = "https://api.linkedin.com/uas/oauth/requestToken"; 
$rt_info = $oauth->getRequestToken($api_url); 

// now set the token so we can get our access token 
$oauth->setToken($rt_info["oauth_token"], $rt_info["oauth_token_secret"]); 

// instruct on how to authorize the app 
print("Please visit this URL:\n\n"); 
printf("https://www.linkedin.com/uas/oauth/authenticate?oauth_token=%s", $rt_info["oauth_token"]); 
print("\n\nIn your browser and then input the numerical code you are provided here: "); 

// ask for the pin 
$pin = trim(fgets(STDIN)); 

// get the access token now that we have the verifier pin 
$at_info = $oauth->getAccessToken("https://api.linkedin.com/uas/oauth/accessToken", "", $pin); 

// set the access token so we can make authenticated requests 
$oauth->setToken($at_info["oauth_token"], $at_info["oauth_token_secret"]); 

// do a simple query to make sure our token works 
// we fetch our own profile on linkedin. This query will be explained more on later pages 
$api_url = "http://api.linkedin.com/v1/people/~"; 
$oauth->fetch($api_url, null, OAUTH_HTTP_METHOD_GET); 

// print_response is just a fancy wrapper around print and is defined later 
// or you can look now and see it in the code download 
print_response($oauth); 

答えて

5

私は、サーバーのコンテキストで端末(端末でphp myscript.php を行う)ためのものPHPスクリプトを実行していると思います。サーバーコンテキストでは、 STDINからの読み取りは許可されません。

$pin = "PIN I got from that URL"で始まり、付属のスクリプトから残りの という新しいPHPファイルを作成し、そのスクリプトを実行します。そして、print_response 機能を注意してください、私は彼らがあなたの例では

:-)何を意味するか知らない、LinkedInはそのWebページにトークンを表示します。これは の帯域アクセスから呼び出され、古いスマートフォン(AFAIK!)のように、リダイレクトしないデバイスに便利です。 通常のワークフローでは、コールバックURL mysite.com/oauth_client/authentication_success?token=TOKENにリダイレクトするように設定し、そのURLには が残ります。

関連する問題