PHP+OAuthで認証エラー

このQ&Aのポイント
  • OAuth認証で認証エラーが発生してしまいます。
  • TwitterOAuthのgetメソッドを使用してユーザ情報を取得できません。
  • 認証エラーの原因を特定するための検証方法やアドバイスをお願いします。
回答を見る
  • ベストアンサー

PHP+OAuthで認証エラー

OAuth認証で、登録したAPIの認証「○○ががあなたのアカウントを利用することを許可しますか?」で ユーザ/PWを入力してログイン後、oauthライブラリを使用してOAuthオブジェクトを下記の様に作成したのですが。 $connection = new TwitterOAuth('CONSUMER_KEYの値', 'CONSUMER_SECRETの値'); $content = $connection->get('account/verify_credentials'); $connectionのhttp_codeリターンコードが'200'ではなくNULLになってしまい。 更に、$contentの内容に、"Could not authenticate you."という認証エラーが返ってきてしまいユーザ情報が取得できずにいます。 なぜ、認証エラーになってしまうのかが全く見当つかず。。 何か良い検証方法または、アドバイスありましたら教えてください。 参考サイトは http://www.sdn-project.net/labo/oauth.html http://blog.n-colo.net/archives/710 ちなみに、ライブラリのバージョンは0.2.0になります。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Site: GET account/verify_credentials | Twitter Developers https://dev.twitter.com/docs/api/1/get/account/verify_credentials には,「Requires Authentication? Yes」とあるので,認証が必要です。 TwitterOAuthにAccessTokenとAccessTokenSecretを与えてみてはどうでしょうか。

cwm474
質問者

お礼

Yune-Kichさん 回答ありがとうございました! おっしゃられてた通り、AccessTokenとAccessTokenSecretを引数に追加したら、ユーザ情報がとれました。 とても助かりました。 また、QNo.5918462の質問・回答もとても参考になりました!

関連するQ&A

  • twitterのOAuth認証+xml抽出(php

    こんにちは。 PHPのプログラムで分からない部分があるので質問させてください。 twitterAPIを用いてアカウントの情報のxmlを取得し、simplexmlで解析して ・フォロワー数 ・フォロー数 ・リストされている数 ・ツイート数 ・認証アカウントかどうか といったステータスをsimplexml_load_fileで読み込んで、抽出して変数に入れたいのですが・・・ (この変数に入れたステータスで色々と計算をする予定です) エラーが出てファイルを読み込んでくれません。 ユーザー情報を取得するAPIが認証を通さないといけないため、OAuthを用いて認証しています。 認証が必要のないAPIで返ってきたxmlは問題無くsimplexml_load_fileが使えます。 ちなみにさくらのレンタルサーバーのスタンダードで、PHPのバージョンは5.2.17です。 色々試してみたのですが、何が原因なのか分からないので、ご教授お願いします。 <コード> <?php // twitteroauth.phpを読み込む。 require_once("twitteroauth.php"); // Consumer keyの値 $consumer_key = "******"; // Consumer secretの値 $consumer_secret = "*****"; // Access Tokenの値 $access_token = "******"; // Access Token Secretの値 $access_token_secret = "******"; // OAuthオブジェクト生成 $to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret); $req = $to->OAuthRequest("http://api.twitter.com/1/users/show/id.xml","GET",array("user_id"=>"******")); $xml = simplexml_load_file($req) or die("XMLパースエラー"); ?> <実行結果> Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "<?xml version="1.0" encoding="UTF-8"?> <user> <id>*******</id> <name>******</name> <screen_name>******</screen_name> <location>九州</location> <description>webクリエイ ・・・(以下略)・・・ ;。 &am in /home/*********/www/newfile.php on line 20 XMLパースエラー

    • 締切済み
    • PHP
  • TwitterのOauth認証プログラムについて

    TwitterのOauth認証プログラムについて 現在、Oauth認証を使って、一般ユーザが認証確認後、 WEBから投稿できるシステムを作ろうとしています。 Oauth_TokenとOauth_Token_Secretは、 $tok = $to->getRequestToken(); で取得されたものを変数として保持して取得しようとしているのですが、 この2つの認証コードと、固有の consumer_keyとconsumer_secretを使用して 認証させ、投稿プログラム $req = $to->OAuthRequest("https://twitter.com/statuses/update.xml","POST",array("status"=> $tweet . " " . $url . " #" . $hash)); を実行させると、なぜか <?xml version="1.0" encoding="UTF-8" ?> - <hash> <request>/statuses/update.xml</request> <error>Could not authenticate you.</error> </hash> つまり、認証されてない状態になってしまいます。 Oauth_TokenとOauth_Token_Secretを取得している場所が間違っているのでしょうか? もしかしてこの2つのコードが逆だったのかもしれないと思い、 逆にして投稿してみたのですが、それでも同じエラー画面に飛んでしまいます。 なぜだか分かる方、いらっしゃいますか?

    • ベストアンサー
    • PHP
  • Twitter Oauth認証がエラーになります。

    現在Twitterログインアプリを作りいのですが、 下記のようなエラーが出てしまいます。 Fatal error: Class 'Codebird' not found in /var/www/html/callback.php on line 8 認証にはcodebird.phpというライブラリを使っております。 (https://github.com/mynetx/codebird-php 下記コードのソースもこちらです。) 分かる方がいらっしゃれば教えて原因を教えて頂けると非常に助かります。 宜しくお願い致します。。 以下仕様 <a href="callback.php">twitterでログイン</a> これをクリックすると、callback.phpに飛び認証が行われるという具合です。 callback.php内ではconfig.phpとcodebird.phpを読み込んでます。 以下callback.phpコード var_dump($me); が実行出来ず、先に記したエラーが起きます。 <?php require_once('config.php'); require_once('codebird.php'); session_start(); Codebird::setConsumerKey(CONSUMER_KEY, CONSUMER_SECRET); //上記の定数はconfig.phpに記載しており、スペルミスはありません。 $cb = Codebird::getInstance(); if (! isset($_GET['oauth_verifier'])) { // gets a request token $reply = $cb->oauth_requestToken(array( 'oauth_callback' => 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] )); // stores it $cb->setToken($reply->oauth_token, $reply->oauth_token_secret); $_SESSION['oauth_token'] = $reply->oauth_token; $_SESSION['oauth_token_secret'] = $reply->oauth_token_secret; // gets the authorize screen URL $auth_url = $cb->oauth_authorize(); header('Location: ' . $auth_url); die(); } else { // gets the access token $cb->setToken($_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); $reply = $cb->oauth_accessToken(array( 'oauth_verifier' => $_GET['oauth_verifier'] )); // $_SESSION['oauth_token'] = $reply->oauth_token; // $_SESSION['oauth_token_secret'] = $reply->oauth_token_secret; $cb->setToken($reply->oauth_token, $reply->oauth_token_secret); $me = $cb->account_verifyCredentials(); var_dump($me); exit; }

    • 締切済み
    • PHP
  • OAuth認証でtwitterにアクセスできません

    PHPでOAuth認証でtwitterにつぶやきを投稿するプログラムを作ってます。 twitterの画面までは飛ぶのですが。 こちらです。 このページに対するリクエスト・トークンがありません。アプリケーションがTwitterアカウントを使用するかどうかを確認するために必要な特殊キーです。 送信したサイトまたはアプリケーションに戻って再度お試しください。何らかの手違いがあったかもしれません。 という文章が出てきて、アプリ認証画面に飛びません。 twitterのdeveloperのページでちゃんと登録して、キーなどはちゃんと入力しました。 今はローカルで試しています。 該当のプログラムはこんな感じです。 ~~~~~~ $twitter = new tmhOAuth( array("consumer_key"=>"****","consumer_secret"=>"****")); $here = tmhUtilities::php_self(); session_start(); if(isset($_REQUEST["command"]))switch($_REQUEST["command"]){ case "authorize"; //OAuth認可,まずリクエストトークンを取得 $twitter->request("POST",$twitter->url("oauth/request_token",""), array("oauth_callback" => $here."?command=callback")); //リクエストトークンはコールバックを受けてアクセストークンする際に必要なのでセッションに格納 $_SESSION["request_token"] = $twitter->extract_params($twitter->response["response"]); //twitterの認証画面へリダイレクト header("Location:".$twitter->url("oauth/authorize","")."?oauth_token={$_SESSION['request_token']['oauth_token']}"); break; ~~~~~~

    • 締切済み
    • PHP
  • javaでTwitterのOAuth認証を用いたつぶやきのポストを実現

    javaでTwitterのOAuth認証を用いたつぶやきのポストを実現したいと考えています。アクセストークンとアクセストークンシークレットは取得できたのですがそれを用いてつぶやきをポストすることができません。OAuthのライブラリを使えばポストすることは出来たのですができればライブラリを使わずに実現したいと思っています。おそらくポストのやりかたがおかしいと思うのですが何が悪いのかわかりません。javaはあまり得意ではないためお見せするのも恥ずかしいソースですがおかしなところを指摘していただけるとありがたいです。ポストの部分を載せます。 String url="http://twitter.com/statuses/update.xml"; URL urlObj=new URL(url); HttpURLConnecton urlCon=(HttpURLConnection)urlObj.openConnection();urlCon.setRequestMethod("POST"); urlCon.setDoOutput(true); urlCon.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); urlCon.setRequestProperty("Authorization",header); //変数headerには以下のような文字列が入っています //OAuth oauth_nonce="****", oauth_signature_method="HMAC-SHA1", oauth_timestamp="****", oauth_consumer_key="****", oauth_token="****", oauth_signature="****", oauth_version="1.0" String body="status=test"; PrintWriter pw=new PrintWriter(urlCon.getOutputStream()); pw.print(body); pw.flush(); pw.close(); //ここでエラー BufferedReader inStr=new BufferedReader(new InputStreamReader(urlCon.getInputStream()));

    • ベストアンサー
    • Java
  • 言語はRubyを使っているのですが、現在OAuthを使ってTwitte

    言語はRubyを使っているのですが、現在OAuthを使ってTwitterアプリを作ろうと思っています。 そこでgemのoauth 0.3.6を入れ、色々なページを参考に作ろうと思っているのですが、request_tokenが旨く取得できません。 何故か認証エラーになってしまいます。 以下がコードになります。 ========================= require "oauth" oauth = OAuth::Consumer.new("Key", "SecretKey",{:site => "http://twitter.com"}) oauth.get_request_token(:oauth_callback=>"callback先url") ========================= 上記のコードをirbにて入力した際に出力されるエラー内容はこちらです。 OAuth::Unauthorized: 401 Unauthorized C:/Ruby/lib/ruby/gems/1.8/gems/oauth-0.3.6/lib/oauth/consumer.rb:200:in `token_request' C:/Ruby/lib/ruby/gems/1.8/gems/oauth-0.3.6/lib/oauth/consumer.rb:128:in `get_request_token' ちなみに開発環境は以下です。 Windows XP SP3 Ruby 1.8.6 Ruby on Rails 2.3.5 Mysql 5 もし上記、わかる方がいらっしゃいましたらご教授頂けないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Ruby
  • OAuthでTwitterにツイートしたい

    はじめまして。 よろしくお願いいたします。 ■やりたいこと。 ユーザがWebサイトへアクセスし、WebサイトからTwitterやFaceBookへつぶやける仕組みを構築したいと思っています。 ネットで調べたところ、OAuthを用いて行えそうだとわかりました。 しかし、いろいろ調べていますが情報が少なく、うまくできずに困っています。 参考にすべきサイトなどご存知でしたら教えていただけないでしょうか? ■試してみたこと。 サンプルらしきものをダウンロードし、試してもいます。 うまくできていませんが、やってみたことは以下の通りです。 (1)Twitterにアプリを登録し、consumer_keyとconsumer_secretを取得 (2)Twitterに(1)のkeyなどを用いてアクセス。 (3)上記(2)を行うと、ユーザに認証するかを確認する画面が表示され、承認すると、 7ケタのPINコードが表示される。 (4)このPINってどう使うんだろう・・・。 ⇒ネットで調べてもPINがよくわかりませんでした。また、これをユーザに入力してもらわないと認証できないのでしょうか? 自動でできる方法はありますでしょうか? いろいろ書いてしまい、すみません。 質問をまとめると、 ■質問事項 まとめ (1)WebサイトからTwitterやFaceBookへつぶやける仕組構築に、参考となるサイトを紹介してほしい。 (できればPHPのサンプルコードがあると嬉しいです・・・。) (2)PINコードの使用方法、および、ユーザに入力してもらわず自動で行える方法の有無。 です。 自分でも継続して調査を行っておりますが、 ご存知の方がいらっしゃいますが、ご協力を宜しくお願い致します。

    • 締切済み
    • PHP
  • 0Auth+PHPで初回ユーザならデータベースに

    質問は、初回ユーザならmysqlのデータベースに格納し、初回でなければcallback.phpから../../index.phpにログインしたScreen_nameを表示させたいのですが、どうにもうまくいかず、どなたかご教授して頂けませんでしょうか。 よろしくお願い致します。 <?php session_start(); require_once('twitteroauth.php'); define('CONSUMER_KEY', 'xxxxx'); define('CONSUMER_SECRET', 'xxxxx'); // getToken.php でセットした oauth_token と一致するかチェック if ($_SESSION['oauth_token'] !== $_REQUEST['oauth_token']) { unset($_SESSION); echo '<a href="getToken.php">token不一致。最初からどうぞ</a>'; exit; } // access token 取得 $tw = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); $access_token = $tw->getAccessToken($_REQUEST['oauth_verifier']); // Twitter の user_id + screen_name(表示名) $user_id = $access_token['user_id']; $screen_name = $access_token['screen_name']; // 初回ユーザかチェックするロジック ここから分からなくなっています。。。。。。。 mysql_connect ('localhost', 'root', 'xxxx'); mysql_select_db('xxxx'); $user_id = get_current_user_id(); if ($user_id == 0) { $sql = "insert into xxxxx values (user_id char(50), screen_name char(255))"; } else { $user_id=$_POST['user_id']; }

    • ベストアンサー
    • PHP
  • botを作っているのですが、oauth認証に関する質問です。

    botを作っているのですが、oauth認証に関する質問です。 http://www.sdn-project.net/labo/twitter_bot.html こちらを参考にbotをbasic認証からoauth認証に切り替えているのですが、以下のエラーが出ています。 TLに一応は反応してくれるのですが、一つのtweetに何回も反応してしまい、とても困っています。 php等がよくわかっていないので、どうすればいいのかまったくわかりません。 ./(botのid)_Since.datを作ればいいのかと思いますが、何をどうすればいいかもさっぱりです。 どなたかわかる方、教えてくだされば幸いです。 Warning: file() [function.file]: Unable to access ./(botのid)_Since.dat in /usr/local/www/htdocs/***/public_html/twitter_bot.php on line 27 Warning: file(./(botのid)_Since.dat) [function.file]: failed to open stream: No such file or directory in /usr/local/www/htdocs/***/public_html/twitter_bot.php on line 27 Warning: fopen() expects at least 2 parameters, 1 given in /usr/local/www/htdocs/***/public_html/twitter_bot.php on line 36 Warning: flock() expects parameter 1 to be resource, boolean given in /usr/local/www/htdocs/***/public_html/twitter_bot.php on line 37 Warning: fputs(): supplied argument is not a valid stream resource in /usr/local/www/htdocs/***/public_html/twitter_bot.php on line 38 Warning: flock() expects parameter 1 to be resource, boolean given in /usr/local/www/htdocs/***/public_html/twitter_bot.php on line 39 Warning: fclose(): supplied argument is not a valid stream resource in /usr/local/www/htdocs/***/public_html/twitter_bot.php on line 40 Normal termination: 0.9656 sec, 10:58:22 以上に出てくるtwitter_bot.phpは http://www.sdn-project.net/labo/twitter_bot.txtをそのまま使っています。

    • 締切済み
    • PHP
  • ツイタマで401エラー

    Twitterクライアントの「ツイタマ」をずっと使っていたのですが、最近になって・・・起動すると「データを取得できませんでした。(401: Could not authenticate with OAuth.)」「アクセストークンが有効ではありません。設定からユーザ認証をし直してください。」とエラーメッセージが出てしまいます。 なぜかTLは読み込めるのですが、書き込みができません。 Saezuriでも試してみたのですが、全く同じエラーが出ています。 対処法を教えて下さい。

専門家に質問してみよう