3

PHP の PECL OAuth モジュールを使用して LinkedIn 共有 API にリクエストを送信する際に問題が発生しています。私は価値のあるすべてをグーグルで検索しましたが、例が見つかりません。

私のPHPコード:

$linkedin_oauth = new OAuth($linkedin_consumer_key,$linkedin_consumer_secret,OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_FORM);
  $linkedin_oauth->setToken($linkedin_data->linkedin_token, $linkedin_data->linkedin_consumer_secret);
  $linkedin_oauth->setAuthType(OAUTH_AUTH_TYPE_FORM);

  $body = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
  $body .= "<share>";
  $body .= "<comment>83% of employers will use social media to hire: 78% LinkedIn, 55% Facebook, 45% Twitter [SF Biz Times] http://bit.ly/cCpeOD</comment>";
  $body .= "<content>";
  $body .= "<title>Survey: Social networks top hiring tool - San Francisco Business Times</title>";
  $body .= "<submitted-url>http://sanfrancisco.bizjournals.com/sanfrancisco/stories/2010/06/28/daily34.html</submitted-url>";
  $body .= "<submitted-image-url>http://images.bizjournals.com/travel/cityscapes/thumbs/sm_sanfrancisco.jpg</submitted-image-url>";
  $body .= "</content>";
  $body .= "<visibility>";
  $body .= "<code>anyone</code>";
  $body .= "</visibility>";
  $body .= "</share>";

$headers = array('Content-Type' => 'text/xml');
  $linkedin_oauth->fetch("http://api.linkedin.com/v1/people/~/shares", $body, OAUTH_HTTP_METHOD_POST, $headers);
  $linkedin_share_response = $linkedin_oauth->getLastResponse();

ただし、これにより例外が発生します。

Invalid auth/bad request (got a 401, expected HTTP/1.1 20X or a redirect)

私のヘッダーは次のようになります。

OAuth oauth_consumer_key="<KEY_REMOVED>",oauth_signature_method="HMAC-SHA1",oauth_nonce="12581672284fa32618a44a31.27944550",oauth_timestamp="1336092184",oauth_version="1.0",oauth_token="<TOKEN_REMOVED>",oauth_signature="Qqt5zQKITSvk7OyrdWdFLaR%2F9ns%3D

ここで何が起こっているのか誰にも分かりませんか?私が何をしても、応答は常に 401 です。

call を GET 呼び出しに置き換えると、正常に動作します。

4

2 に答える 2

0

登録した OAuth アプリケーションでリターン URL を確認します。これはスクリプトの URL でなければなりません。

于 2013-02-04T10:01:50.547 に答える
0

このことについてウェブ上に多くの情報があるようには見えませんが、これは私にとってはうまくいくようです. OAuth2.0 アクセス トークンを使用している場合、これは機能するはずです。変数をプラグインして、何か問題があればお知らせください。

$params = array(
    'oauth2_access_token'   => $oauth2_access_token
);

$url = 'https://api.linkedin.com/v1/people/~/shares?' . http_build_query($params);

$xml_content = '<?xml version="1.0" encoding="UTF-8"?><share><content><title>' . $title . '</title><submitted-url>' . $link . '</submitted-url><submitted-image-url>' . $image . '</submitted-image-url></content><visibility><code>anyone</code></visibility></share>';


$context = stream_context_create(array(
    'http' => array(
        'method'    => 'POST',
        'content'   => $xml_content,
        'header'    => "Content-type: application/xml"
    )
));

$stream = fopen($url, 'rb', false, $context);

if ($stream) {
    $metaData = stream_get_meta_data($stream);
    $response = stream_get_contents($stream);
    fclose($stream);
}
于 2014-02-18T11:17:16.223 に答える