質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

2343閲覧

[PHP]Twitter 自動フォロー返しAPI

pac894398

総合スコア429

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2014/12/09 16:53

http://one-text.tk/index.txt

上記コードで次のようなエラーが出ます。

Warning: fputs() expects parameter 1 to be resource, string given in SERVER PASS on line 59

解決方法を教えてください。

ご回答よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

エラーが出る原因は以下の1点です。

STDIN STDOUT STDERR といった標準リソースはコマンドラインで実行したときにしか定義されないので、Apacheを利用してブラウザからのアクセスでも実行可能にしたい場合にはそれぞれ fopen('php://stdin', 'rb') fopen('php://stdout', 'wb') fopen('php://stderr', 'wb') として自分でリソースを準備する必要がある。

ところでこれ、何年前のコードですか?全体的に非常に古い書き方が目立ちますね…

  • fputsはfwriteのエイリアスなので、出来る限り後者を利用すべきである
  • そもそも何でecho構文を利用しないのか… (エラーバッファに書き込むケースと統一したいのは分かるけど、あまりPHPでそれをしなくてもいい気がしないでもない)

lang

1echo "New followers count = " . count($new_followers) . "\n";

またTwitterAPIは仕様変更を繰り返しているので、古すぎるコードは参考に出来ません。 現在は…

  • TwitterのAPIバージョンは全て1.1に統一されており、URL中には必ず「1.1」というバージョン番号が含まれる
  • Basic認証では利用出来ず、OAuth認証必須になっている

結論から言えば、ご提示のコードをいくらPHPでエラーが出ないように修正したところでAPIの利用は実現できません。(TwitterのAPIバージョンとは別に)バージョン1系のOAuth認証が絡んでくる場合は事実上ライブラリ必須になります。バージョン2系であればライブラリ無しでも実装可能とは言われますが、Twitter関連ではまだバージョン1系の方がよく利用されているようです。

TwistOAuth
https://github.com/mpyw/TwistOAuth

(脳内デバッグしかしていないので、何か問題点あればコメントください)

lang

1<?php 2 3require 'TwistOAuth.php'; 4 5$ck = 'コンシューマキー'; 6$cs = 'コンシューマシークレット'; 7$ot = 'アクセストークン'; 8$os = 'アクセストークンシークレット'; 9 10try { 11 $to = new TwistOAuth($ck, $cs, $ot, $os); 12 $p1 = array( 13 'cursor' => -1, 14 'count' => 200, 15 'skip_status' => true, 16 'include_user_entities' => false, 17 ); 18 do { 19 $list = $to->get('followers/list', $p1); 20 foreach ($list->users as $user) { 21 if (!$user->following && !$user->follow_request_sent) { 22 try { 23 $p2 = array('user_id' => $user->id_str); 24 $user = $to->post('friendships/create', $p2); 25 if ($user->following) { 26 echo "Followed @{$user->screen_name}\n"; 27 } else { 28 echo "Sent follow request to @{$user->screen_name}\n"; 29 } 30 } catch (TwistException $e) { 31 echo "Failed to follow @{$user->screen_name}: {$e->getMessage()}\n"; 32 } 33 } else { 34 break 2; 35 } 36 } 37 } while ($p1['cursor'] = $list->next_cursor_str); 38} catch (TwistException $e) { 39 echo "Failed to fetch followers: {$e->getMessage()}\n"; 40}

投稿2014/12/09 19:33

mpyw

総合スコア5223

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問