2

Disqus API を使用して、tumblr で作成された出版物にコメントしようとすると問題が発生します。これはコードです:

<?php
    ini_set('display_errors', 'on');

    $thread="XXXXXXXXX"; // e.g., 455718495 — you'll need to also create a $forum and pass that if you know only the thread's URL or identifier rather than the ID
    $api="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; // Generate one at http://disqus.com/api/applications/ -- Secret key is required for anonymous comment posting
    $message="Hello world."; // this is the content of the comment, i.e., what you'd normally type in the postbox
    $author_email="mail.user@mail.com"; // optional, including this will still make the comment a guest comment, but it will now be claimable 
    $author_name="user"; // optional, can be any display name you like
    $fields_string=""; // DO NOT EDIT

    // set POST variables
    $url = 'http://disqus.com/api/3.0/posts/create.json'; // full documentation at http://disqus.com/api/docs/posts/create/
    $fields = array(
        'api_secret'=>urlencode($api), // change to api_key when using a public key
        'thread'=>urlencode($thread),
        'message'=>urlencode($message),
        'author_email'=>urlencode($author_email),
        'author_name'=>urlencode($author_name),
    );

    foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
    rtrim($fields_string,'&');
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_POST,count($fields));
    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);

    // execute POST
    $result = curl_exec($ch);

    // close connection
    curl_close($ch);

?>

コードphpを実行すると、api_key、コメントするメッセージ、スレッドID、メール、ユーザー名などの必要な値を渡します。次のエラーが表示されます。

{"code": 4, "response": "You must be authenticated to perform this action"}

どうすればこのエラーを解決できますか?

4

1 に答える 1

0

デフォルトでは、Disqus API アプリケーションは OAuth を使用するように設定されているため、この例に「access_token」引数を追加する必要があります。アクセス トークンを取得するには、次の 2 つの方法があります。

  1. OAuth フローを使用して、ユーザーが Disqus アカウントでログインできるようにします --この方法を使用する場合は、author_nameまたは含めませんauthor_email
  2. サイト所有者のアクセス トークンを使用します (上記の例のように、ゲスト コメントに対してこれを行います)。

Disqus での OAuth の動作に関するドキュメントは次のとおりです: http://disqus.com/api/docs/auth/ -- サイト所有者のアクセス トークンは、次のアプリケーション概要で確認できます: http://disqus.com/api /アプリケーション/

以下は、ユーザーを認証してからアクセス トークンを提供する方法の例です: https://github.com/disqus/DISQUS-API-Recipes/tree/master/php/oauth

アクセス トークンを取得すると、スクリプトは次のようになります。

<?php
    ini_set('display_errors', 'on');

    $thread="XXXXXXXXX"; // e.g., 455718495 — you'll need to also create a $forum and pass that if you know only the thread's URL or identifier rather than the ID
    $api="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; // Generate one at http://disqus.com/api/applications/ -- Secret key is required for anonymous comment posting
    $message="Hello world."; // this is the content of the comment, i.e., what you'd normally type in the postbox
    $author_email="mail.user@mail.com"; // optional, including this will still make the comment a guest comment, but it will now be claimable 
    $author_name="user"; // optional, can be any display name you like
    $fields_string=""; // DO NOT EDIT
    $access_token="YOUR_ACCESS_TOKEN";

    // set POST variables
    $url = 'http://disqus.com/api/3.0/posts/create.json'; // full documentation at http://disqus.com/api/docs/posts/create/
    $fields = array(
        'api_secret'=>urlencode($api), // change to api_key when using a public key
        'thread'=>urlencode($thread),
        'message'=>urlencode($message),
        'author_email'=>urlencode($author_email),
        'author_name'=>urlencode($author_name),
        'access_token'=>urlencode($access_token),
    );

    // rest of script ...
?>
于 2012-12-17T22:59:24.130 に答える