私はtwitterカスタム共有ボタン「自分のtweetボタンを作成する」(https://dev.twitter.com/docs/tweet-button)を使用しています。 ドキュメントでは、パラメータを渡すためにクエリパラメータを使用する必要があると書かれています。Twitter共有 - urlencodeパラメータ%2Cを%252Cにリダイレクト
問題:私はそれにURLエンコードされた文字列を渡すと、間違ってテキストparamをエンコードしています。ツイートメッセージにカンマ(、)が%252Cとして表示されます。他の文字もエンコードされています。
私はPHP url encode(http://php.net/manual/en/function.urlencode.php)を使用して呼び出しの文字列を準備します。
$text = urlencode("I just backed ". $project->getTitle().", an amazing new mobile app, on appbackr, where anyone can back mobile apps");
その後、私はTwitterのリンクを構築:
'http://www.twitter.com/share?url='.urlencode($projectUrl).'&via='.$via.'&text='.$text.'&related='.$user->getTwitterProfileName()
最終TwitterのURL呼び出しは次のとおりです。
http://www.twitter.com/share?url=http%3A%2F%2Flocalhost%2Fapp%2Fbig-top-ballet&via=appbackr&text=I+just+backed+Big+Top+Ballet%2C+an+amazing+new+mobile+app%2C+on+appbackr%2C+where+anyone+can+back+mobile+apps&related=philippberner
とすぐにページがブラウザ(ChromeとFirefoxの)で開くとさえずりURLを次のURLにリダイレクトします。
https://twitter.com/intent/tweet?related=philippberner&text=I+just+backed+Big+Top+Ballet%252C+an+amazing+new+mobile+app%252C+on+appbackr%252C+where+anyone+can+back+mobile+apps&url=http%253A%252F%252Flocalhost%252Fapp%252Fbig-top-ballet&via=appbackr
このつぶやきボックスに次のメッセージが表示されます。
経由でモバイルアプリケーションをバックアップすることができますappbackr%の2Cに驚くような新しいモバイルアプリの%2Cとをを私だけの裏付けビッグトップ・バレエ%2C誰が@appbackr
トップ+バレエ%2C + an +驚異の〜トップ+バレエ%252C + an +驚異のに変換します。ツイッターURLで%252Cを%2Cに手動で変更すると、カンマが正しく表示されます。
私はrawurlencodeを使って、URLの空白も取得します。私は前にそれを試みた。私が理解している違いは、空間の符号化にあります。彼らは問題を引き起こしていません。それからtwitterメッセージは次のようになります:I%20%20%20%20%20%20%20%20%20%20%20%20%%20%%20%20%%20%%20%20%20%20%20%%20%%20%%20apps via @appbackr – philipp
これは、URL「http://www.twitter.com/share」を「https://twitter.com/intent/」にリダイレクトすると、GETデータを再度エンコードするTwitter APIのURL書き換えエラーです。つぶやき "この最後のURLを使用します。また、urlencodeの代わりにrawurlencodeを使用する必要があります。 – Darm