SQLの窓

2016年12月11日


jQuery で呼び出した PHP で twitteroauth を使用してツイート(画像も簡単)するサンプル

基本的にブラウザとサーバの直接的なやりとりでサーバに処理をさせるのは、アプリケーションとして必ず複雑になり、メンテナンスにも労力を費やす事となるので、jQuery が前提となる環境では、$.ajax を使用するのが何より簡単になります。

abraham/twitteroauth

twitteroauth を使えば、PHP 側では簡単にツイートが可能になり、画像のアップロードも $.ajax で行えばとてもシンプルに機能を果たす事ができます。

ここでは、全体を説明しませんが、Bootstrap を画面に使用し、スマホ対応が容易になっており、また、だからこそ $.ajax との親和性も高くなっています。

$.ajax 呼び出し部分
	// *************************************
	// 送信ボタン
	// *************************************
	$("#frm").submit( function(event){
		// 本来の送信処理はキャンセル
		event.preventDefault();

		$("#post_check").modal();

	} );


	// **************************************
	// Bootstrap OK ボタン
	// **************************************
	$("#data_post").on("click", function(){

		// エラーメッセージエリアをクリア
		$(".error").next().text( "" );

		// 結果の表示エリアを全てクリア
		$("#result").html( "" );

		// **************************************
		// サーバへ送信
		// **************************************

		// 新規送信用オブジェクト
		var formData = new FormData();

		// 送信フィールド作成
		formData.append("text", $("#row1_fld").val());

		// **************************************
		// サーバ呼び出し
		// **************************************
		$.ajax({
			url: "./post_action.php",
			type: "POST",
			data: formData,
			processData: false,
			contentType: false
		})
		.done(function( data, textStatus ){
			console.log( "status:" + textStatus );
			console.log( "data:" + JSON.stringify(data, null, "    ") );
			options.info("処理が完了しました");

		})
		.fail(function(jqXHR, textStatus, errorThrown ){
			console.log( "status:" + textStatus );
			console.log( "errorThrown:" + errorThrown );
			options.info("アップロードに失敗しました");
		})
		.always(function() {

		})
		;

	});
Bootstrap では、Form ありきで画面設計されているので、その機能を十分に使用できるように、submit イベントで event.preventDefault() を実行し、処理は Bootstrap(JS) のダイアログ側で呼び出しています。

PHP 側の処理は、ツイートするのみの post_action.php が行います。

post_action.php
<?php
// *************************************
// キャラクタセット
// *************************************
header( "Content-Type: application/json; charset=utf-8" );
// *************************************
// キャッシュ無効
// *************************************
session_cache_limiter('nocache');
session_start();


// *************************************
// ライブラリ 
// https://twitteroauth.com/
// *************************************
require "twitteroauth/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
 
// *************************************
// API 情報
// https://apps.twitter.com
// *************************************
$consumer_key			= "";
$consumer_secret		= "";
$access_token			= "";
$access_token_secret	= "";
 
// *************************************
// POST
// *************************************
$connection = new TwitterOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret);
$result = $connection->post("statuses/update", ["status" => $_POST['text'] ]);

// *************************************
// POST 画像
// *************************************
/*
$connection = new TwitterOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret);
$media1 = $connection->upload('media/upload', ['media' => 'images/image1.png']);
$media2 = $connection->upload('media/upload', ['media' => 'images/image2.png']);
$parameters = [
	'status' => '画像投稿です https://twitteroauth.com/ サンプルそのまま',
	'media_ids' => implode(',', [$media1->media_id_string, $media2->media_id_string])
];
$result = $connection->post('statuses/update', $parameters);
*/

$_POST['result'] = $result;
 

// *************************************
// PHP の結果を result キーで
// JSON としてブラウザに返す
// *************************************
print json_encode($_POST , JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT );


?>

ソースコードを解りやすくするために、コメント内で固定の画像を含めたツイートの処理があります。(実際は、画像データが jQuery の $.ajax で送られて来るようにします。)

API 情報は、Twitter のページの右下にあるリンクの『開発者』から移動し、My apps でアプリケーションを作成して Keys and Access Tokens のタブより取得するわけですが、昔は無かったモバイルの登録が必要になります。

モバイルの登録は、元の Twitter のページの『設定』にありますが、ソフトバンクのスマホから電話番号を登録する場合は注意が必要です。

デフォルトでは海外から通信を遮断している

My Softbank の設定で海外からの受信の拒否を解除する必要がありますが、やはり海外からは拒否したいのが普通ですから、登録後は元に戻しておいたほうがいいと思います。

迷惑メールフォルダ機能を使っている場合

登録されていないところからのメールは迷惑フォルダに入って気が付かない可能性もあるので注意です。



タグ:jquery twitter PHP
posted by lightbox at 2016-12-11 02:08 | Comment(0) | PHP + Twitter | このブログの読者になる | 更新情報をチェックする
バッチ処理

Microsoft Office
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり