我正在通过api中的链接成功使用oAuth v2。
它给了我这样的访问令牌:
"use strict";
但是,不幸的是,在获得身份验证之后,我无法成功执行简单的get查询。
这是我的第一个jquery尝试:
access_token: "AQUqvUuTXuQ2_Tr9NutHYlQQEDhiTtkHb5Jn5ozgvDfhXzu4l-TP9pE07VqYiH4QTjijzwWFa28tdmjflrtNG3ycyxNAdVx0WsWl9LcfZMSyYqSfBQjtaWtkF4WzoDoxomS7J0b0m-1avrWbsvU3ZpPc388ACtN3d2wCKgK6CXFXoHNMiz4tnHnKhtjU-yzvnFJDRTSHKKBu4lt1zZZ0hr33w-SsXqh4hAZNHxUu6s2itR85RV1cT17_EfHt2UiqeS7wB7_udxxIEYxSOk5GvdXRT5txDveKLjMs1rMhxHf72JcAoGAoxDSQXK2ek2KcFgYOcJ6Zg5L5pDImfjls4mSGWFnU-w"
del: function mkHttp()
expires_in: 5183999
get: function mkHttp()
me: function mkHttpMe()
patch: function mkHttp()
post: function mkHttp()
provider: "linkedin2"
put: function mkHttp()
toJson: function toJson()
<prototype>: Object { … }
这是$ .get firefox控制台错误:
$(function(){
$('#linkedin-button').on('click', function() {
// Initialize with your OAuth.io app public key
OAuth.initialize('MYKEYISOK');
// Use popup for oauth
OAuth.popup('linkedin2').done(function(result) {
$.get( "https://api.linkedin.com/v2/me", function( data ){
console.log(data),
});
})
})
});
这是我第二次不使用jquery的尝试:
{"serviceErrorCode":65604,"message":"Empty oauth2 access token","status":401}
它也不起作用。
这是我的第三次尝试:
result.get( "http://api.linkedin.com/v1/companies/1441/updates", function( data ) {
console.log(data);
});
这是我的第四次尝试,现在似乎可以使用:
$.ajax({
url: 'https://api.linkedin.com/v2/me',
headers: {
'access_token':result.access_token
},
method: 'GET',
dataType: 'json',
success: function(data){
console.log('succes: '+data);
}
});
但是我得到了一个新的错误:
$.ajax({
url: 'https://api.linkedin.com/v2/me?oauth2_access_token='+result.access_token,
method: 'GET',
dataType: 'json',
success: function(data){
console.log('succes: '+data);
}
});
这是解释: Any queries to the api.linkedin.com/v2/ return "Not enough permissions to access ..."
在授权的第一步中,使用r_liteProfile代替r_basicprofile。使用此accessToken解决了我所有的问题,太棒了!
我可以很好地将OAuthv2设置与GET查询一起发送,以使其正常工作吗?
答案 0 :(得分:0)
确保使用了以下作用域。
r_liteprofile,r_emailaddress,w_member_social
下面的代码将向您发送授权流程
$params = array('response_type' => 'code',
'client_id' => $this->api_key,
'scope' => $this->scope,//r_liteprofile,r_emailaddress,w_member_social
'state' => uniqid('', true), // unique long string
'redirect_uri' => 'redirect url',
);
// Authentication request
$url = 'https://www.linkedin.com/oauth/v2/authorization?' . http_build_query($params);
要接收访问令牌,请使用以下代码
$params = array('grant_type' => 'authorization_code',
'client_id' => $this->api_key,
'client_secret' => $this->api_secret,
'code' => $_GET['code'],
'redirect_uri' => base_url().$this->redirect,
);
// Access Token request
$url = 'https://www.linkedin.com/oauth/v2/accessToken?' . http_build_query($params);
$data_len = strlen(http_build_query($params));
// Tell streams to make a POST request
$context = stream_context_create(
array('http' =>
array('method' => 'POST','header'=> 'Content-Length: 0'
)
)
);
// Retrieve access token information
$response = file_get_contents($url, false, $context);
$token = json_decode($response);
return $token->access_token;