在Curl和PHP中使Linkedin oAuth自动化 [英] Automating Linkedin oAuth usin Curl and PHP

查看:77
本文介绍了在Curl和PHP中使Linkedin oAuth自动化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使对LinkedIn登录进行身份验证的过程自动化,以便对LinkedIn上的人员执行公开搜索.

首先,我将尝试解释自己在做什么.

我正在使用四个文件:

  • oAuth.php(必填)
  • linkedin.php(PHP LinkedIn库)
  • auth.php(从LinkedIn lib文件获取oAuth令牌)
  • 回调URL demo.php?params(成功验证后,将使用参数打印当前用户的个人资料和搜索结果)

身份验证URL为https://api.linkedin.com/uas/oauth/authorize?oauth_token=$oauthtoken.

我做了两件事,似乎都不起作用;他们是:

  1. 我正在使用curl来自动执行转到身份验证URL,发布字段(用户名,密码,oauth令牌,csrfToken,持续时间,sourceAlias等,这些是我从Firebug认识到的)的过程. /p>

    这里唯一改变的两件事是oauth令牌和csrfToken(通过解析身份验证URL中的内容).每次页面加载时,我都能同时获得两者,并最终尝试从curl_exec打印GET响应.

  2. 仅尝试发布电子邮件和密码,并尝试打印GET响应.

作为参考,这里是我的auth.php:

function extract_unit($string, $start, $end)
{
    $pos = stripos($string, $start);
    $str = substr($string, $pos);
    $str_two = substr($str, strlen($start));
    $second_pos = stripos($str_two, $end);
    $str_three = substr($str_two, 0, $second_pos);
    $unit = trim($str_three); // remove whitespaces
    return $unit;
}

session_start();

$config['base_url']             =   'http://linkedin.tweetrank.tk/auth.php';
$config['callback_url']         =   'http://linkedin.tweetrank.tk/demo.php';
$config['linkedin_access']      =   'my key';
$config['linkedin_secret']      =   'my secret';

include_once "linkedin.php";

# First step is to initialize with the consumer key and secret. We'll use
# an out-of-band oauth_callback
$linkedin = new LinkedIn($config['linkedin_access'], $config['linkedin_secret'], $config['callback_url']);
//$linkedin->debug = true;

# Now we retrieve a request token. It will be set as $linkedin->request_token
$linkedin->getRequestToken();
$_SESSION['requestToken'] = serialize($linkedin->request_token);

# With a request token in hand, we can generate an authorization URL, which
# we'll direct the user to
//echo "Authorization URL: " . $linkedin->generateAuthorizeUrl() . "\n\n";

echo $url = $linkedin->generateAuthorizeUrl();
$token = $linkedin->generateAuthorizeToken();
//echo '<br><br>';
$data = file_get_contents($url);
$csrfToken = extract_unit($data,'name="csrfToken" value="','"');

//echo $csrfToken;
//echo $token;
//echo 'https://www.linkedin.com/uas/oauth/authenticate?oauth_token='.$token.'&amp;trk=uas-continue';
// INIT CURL

$postParams = 'email=myemail&password=mypassword&duration=720&authorize=Ok%2C+I%27ll+Allow+It&extra=&access=-3&agree=true&oauth_token='.$token.'&appId=&csrfToken='.$csrfToken.'&sourceAlias=0_8L1usXMS_e_-SfuxXa1idxJ207ESR8hAXKfus4aDeAk';

现在,我将身份验证URL和postParams与curl一起使用.

解决方案

为了获得登录过程,必须使用LinkedIn网页授权步骤;我们无法让第三方应用接受凭据并使用链接https://api.linkedin.com/uas/oauth/authorize?oauth_token=$oauthtoken

进行linkedIn授权

I am trying to automate the process of authenticating LinkedIn login in order to perform a public search for people on LinkedIn.

First i will try to explain what i was doing.

I am using four files:

  • oAuth.php (required)
  • linkedin.php (php LinkedIn library)
  • auth.php (which gets oAuth token from the LinkedIn lib file)
  • callback url demo.php?params (which, after successful authenticaton, prints the current user's profile and the search results using params)

The authentication url is https://api.linkedin.com/uas/oauth/authorize?oauth_token=$oauthtoken.

I did two things, neither seems to work; they are:

  1. I am using curl to automate the process of going to the authentication url, posting fields (username, password, oauth token, csrfToken, duration, sourceAlias, etc., which I came to know from Firebug).

    The only two things which change here are oauth token and csrfToken (by parsing the content in the authentication url). I was able to get both, each time the page loads, and finally trying to print the GET response from curl_exec.

  2. Trying to post just the email and password, and trying to print a GET response.

For reference here is my auth.php:

function extract_unit($string, $start, $end)
{
    $pos = stripos($string, $start);
    $str = substr($string, $pos);
    $str_two = substr($str, strlen($start));
    $second_pos = stripos($str_two, $end);
    $str_three = substr($str_two, 0, $second_pos);
    $unit = trim($str_three); // remove whitespaces
    return $unit;
}

session_start();

$config['base_url']             =   'http://linkedin.tweetrank.tk/auth.php';
$config['callback_url']         =   'http://linkedin.tweetrank.tk/demo.php';
$config['linkedin_access']      =   'my key';
$config['linkedin_secret']      =   'my secret';

include_once "linkedin.php";

# First step is to initialize with the consumer key and secret. We'll use
# an out-of-band oauth_callback
$linkedin = new LinkedIn($config['linkedin_access'], $config['linkedin_secret'], $config['callback_url']);
//$linkedin->debug = true;

# Now we retrieve a request token. It will be set as $linkedin->request_token
$linkedin->getRequestToken();
$_SESSION['requestToken'] = serialize($linkedin->request_token);

# With a request token in hand, we can generate an authorization URL, which
# we'll direct the user to
//echo "Authorization URL: " . $linkedin->generateAuthorizeUrl() . "\n\n";

echo $url = $linkedin->generateAuthorizeUrl();
$token = $linkedin->generateAuthorizeToken();
//echo '<br><br>';
$data = file_get_contents($url);
$csrfToken = extract_unit($data,'name="csrfToken" value="','"');

//echo $csrfToken;
//echo $token;
//echo 'https://www.linkedin.com/uas/oauth/authenticate?oauth_token='.$token.'&amp;trk=uas-continue';
// INIT CURL

$postParams = 'email=myemail&password=mypassword&duration=720&authorize=Ok%2C+I%27ll+Allow+It&extra=&access=-3&agree=true&oauth_token='.$token.'&appId=&csrfToken='.$csrfToken.'&sourceAlias=0_8L1usXMS_e_-SfuxXa1idxJ207ESR8hAXKfus4aDeAk';

Now I used the authentication URL and the postParams with curl.

解决方案

In order to get login process through, one has to use linkedIn web page authorization step; No way we can have third party app accepting credentials and making linkedIn authorization with the link https://api.linkedin.com/uas/oauth/authorize?oauth_token=$oauthtoken

这篇关于在Curl和PHP中使Linkedin oAuth自动化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆