PHP oauth для linkedin - PullRequest
       1

PHP oauth для linkedin

2 голосов
/ 30 марта 2012

Я пробую краткое руководство от linkedin для аутентификации oauth.Я уже установил библиотеку oauth.Когда я запускаю приведенный ниже код, я не получаю вывод после // ask for the pin.Когда я делаю echo STDIN, браузер буквально отображает STDIN вместо значения STDIN.Почему я не вижу поля для ввода пин-кода, как описано в кратком руководстве по ?

Вот код из руководства по быстрому запуску.Я заменил ключи 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);

1 Ответ

5 голосов
/ 30 марта 2012

Полагаю, вы запускаете скрипт PHP, предназначенный для терминала (выполняющий php myscript.php в терминале) в контексте сервера.И контекст сервера не разрешает чтение из STDIN.

Напишите новый файл PHP, который начинается с $pin = "PIN I got from that URL", а остальные из предоставленного сценария, а затем запустите этот сценарий.И, остерегайтесь функции print_response, я не знаю, что они означают: -)

В вашем примере LinkedIn отображает токен на этой веб-странице.Это называется внеполосным доступом, что полезно для устройств, которые не выполняют перенаправления, таких как старые смартфоны (AFAIK!).В обычных рабочих процессах настройте его так, чтобы он перенаправлял на ваш URL-адрес обратного вызова mysite.com/oauth_client/authentication_success?token=TOKEN, и пусть этот URL обрабатывает остальное.

...