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

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

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

OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Twitter

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

PHP

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

API

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

Q&A

解決済

3回答

285閲覧

POSTで取得した値をリンク先に追加してツイートしたい

nishiym

総合スコア15

OAuth

OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Twitter

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

PHP

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

API

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

0グッド

2クリップ

投稿2019/06/05 00:28

編集2019/06/05 04:15

あるネットサービスでの投稿を自動でツイートしてくれるような機能を作りたいと思っています
そこでPOSTで取得した値をURLに追加してツイートしたいのですが、ツイッターの方でリンクとして認識してくれません。

取得する値は数字で、$_POST['id']の値が10だった場合
https://example.com?id=10 のような内容を入れてツイートしたいと思っています。

ですがツイートしてみると[https://example.com?id=]10 のように[]の部分はURLとして青色表示になるのですが取得したidは普通の文字として表示されてしまいます。

php

1<?php 2 require "twitteroauth/autoload.php"; 3 use Abraham\TwitterOAuth\TwitterOAuth; 4 5 $id = $_POST['id']; 6 7 $consumerKey = "***"; 8 $consumerSecret = "***"; 9 $accessToken = "***"; 10 $accessTokenSecret = "***"; 11 12 13 $twitter = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret); 14 $id_url = "https://example.com?id=".$id; 15 16 $params = [ 17 'status' => "投稿されました\n" . "$id_url" 18 ]; 19 20 $result = $twitter->post("statuses/update", $params);

取得したidの値が文字列として認識されていないことが原因だと思っているのですが、var_dump($_POST['id'])で確認してみるとこの時点でStringになっていました。 strval($id)などを入れてみてもダメでした

また、$id = $_POST['id']ではなく、 $id = 10とした場合はstrval($id)で文字列に変換するとちゃんとurlとして認識されていました。

とても初歩的な問題のような気がしますが、中々解決策が見つからず困っています。

追記
var_dump($_GET['id']);とvar_dump($params);の結果は以下のようになっていました

string(2) "74" //var_dump($_GET['id']) array(1) { ["status"]=> string(47) "投稿されました https://example.com?id=74" } //var_dump($params)

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/06/05 02:53

var_dump($_POST['id']); の結果のスクショと、var_dump($params);とした場合のスクショも質問文中に編集機能を使って貼ってください。
guest

回答3

0

自己解決

POSTではなくGETで取得するようにしたらいけました・・・

php

1$id = $_POST['id'];//変更前 2$id = $_GET['id'];//変更後

正直なぜだかはわかりませんがGETとPOSTの使い分けをちゃんとしなければいけないなと思いました

投稿2019/06/05 04:17

nishiym

総合スコア15

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

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

set0gut1

2019/06/05 05:53

これPOSTで取れる値に変な制御文字がついてて、エディタで表示されていないっていうケースな気がしますね。他のバグを生む可能性があるのでちょっと確認した方が良いかもです。
nishiym

2019/06/05 10:38

コメントありがとうございます やはりなにか原因があるということなんですね… ちょっと確認してみたいと思います!
guest

0

var_dump()した結果を見てから出ないと、ナントモ。

$id_url = "https://example.com/?id=".$id;

とするときの$idに余計な空白文字TAB文字その他記号などついていないことを確認しないと。

投稿2019/06/05 02:56

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

POSTではなくGETで取得するようにしたらいけました・・・

php

1$id = $_POST['id'];//変更前 2$id = $_GET['id'];//変更後

正直なぜだかはわかりませんでしたが、GETとPOSTの使い分けをちゃんとしなければいけないなと思いました

投稿2019/06/05 04:19

nishiym

総合スコア15

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問