Linkedin API技能字段类stdClass错误的对象

时间:2015-02-27 00:24:41

标签: php api linkedin linkedin-jsapi

对于linkedin api,我有以下权限,来自技能领域属于用户的r_fullprofile权限,但是当我尝试提示用户技能时,它会给出以下错误 “即使更改了以下部分后我也会出现此错误”可捕获的致命错误:第45行的/germes/cosbawen23/a133/ipg.foofdfgh/check/index.php中无法将类stdClass的对象转换为字符串< / strong>“”

下面是我的代码:

 <?php
 define('API_KEY',      'kjsdadklasdij98'                                            );
 define('API_SECRET',   'andlksalkdmllasd'                                       );
 define('REDIRECT_URI', 'http://' . $_SERVER['SERVER_NAME'] .    $_SERVER['SCRIPT_NAME']);
 define('SCOPE',        'r_fullprofile r_emailaddress'                              );
 session_name('linkedin');
 session_start();

 if (isset($_GET['error'])) {
// LinkedIn returned an error
  print $_GET['error'] . ': ' . $_GET['error_description'];
   exit;
   } elseif (isset($_GET['code'])) {
// User authorized your application
 if ($_SESSION['state'] == $_GET['state']) {
    // Get token so you can make API calls
    getAccessToken();
} else {
    // CSRF attack? Or did you mix up your states?
    exit;
}
 } else { 
  if ((empty($_SESSION['expires_at'])) || (time() >    $_SESSION['expires_at'])) {
    // Token has expired, clear the state
    $_SESSION = array();
      }
   if (empty($_SESSION['access_token'])) {
     // Start authorization process
    getAuthorizationCode();
     }
     }

     // Congratulations! You have a valid token. Now fetch your profile 
   $user = fetch('GET', '/v1/people/~:(skills:(id,skill:(name)))');
   print $user->skills;
      exit;   
      function getAuthorizationCode() {
     $params = array(
    'response_type' => 'code',
    'client_id' => API_KEY,
    'scope' => SCOPE,
    'state' => uniqid('', true), // unique long string
    'redirect_uri' => REDIRECT_URI,
       );

    // Authentication request
   $url = 'https://www.linkedin.com/uas/oauth2/authorization?' .         http_build_query($params);

// Needed to identify request when it returns to us
$_SESSION['state'] = $params['state'];

// Redirect user to authenticate
header("Location: $url");
exit;
    }

   function getAccessToken() {
   $params = array(
    'grant_type' => 'authorization_code',
    'client_id' => API_KEY,
    'client_secret' => API_SECRET,
    'code' => $_GET['code'],
    'redirect_uri' => REDIRECT_URI,
     );

   // Access Token request
   $url = 'https://www.linkedin.com/uas/oauth2/accessToken?' .    http_build_query($params);

     // Tell streams to make a POST request
     $context = stream_context_create(
       array('http' => 
         array('method' => 'POST',
          )
         )
          );

        // Retrieve access token information
        $response = file_get_contents($url, false, $context);

       // Native PHP object, please
       $token = json_decode($response);

        // Store access token and expiration time
          $_SESSION['access_token'] = $token->access_token; // guard this! 
         $_SESSION['expires_in']   = $token->expires_in; // relative time (in seconds)
         $_SESSION['expires_at']   = time() + $_SESSION['expires_in']; // absolute time

         return true;
           }

         function fetch($method, $resource, $body = '') {
         //print $_SESSION['access_token'];

         $opts = array(
            'http'=>array(
           'method' => $method,
           'header' => "Authorization: Bearer " . $_SESSION['access_token'] . "\r\n" . "x-li-format: json\r\n"
           )
        );

        // Need to use HTTPS
           $url = 'https://api.linkedin.com' . $resource;

           // Append query parameters (if there are any)
          if (count($params)) { $url .= '?' . http_build_query($params); }

        // Tell streams to make a (GET, POST, PUT, or DELETE) request
        // And use OAuth 2 access token as Authorization
       $context = stream_context_create($opts);

       // Hocus Pocus
         $response = file_get_contents($url, false, $context);

           // Native PHP object, please
              return json_decode($response);
         }
         ?>

据我所知,问题在于此部分:

$user = fetch('GET', '/v1/people/~:(skills:(id,skill:(name)))');
print $user->skills;

0 个答案:

没有答案