・vml_AutoLoginを一旦全レコード削除
・Mastodon Loginボタンを押す
・どこかのインスタンスを入力
・インスタンス側のページで承認ボタン
・vanilla側に戻りますが、「Whoops! The OAuth server did not return a valid response.」と出ます。
ログは
[Thu Mar 22 18:05:13.458108 2018] [php7:notice] [pid 7480:tid 1588] [client 127.0.0.1:54545] PHP Notice: Undefined variable: auth in C:\xampp-7.1.7\htdocs\vanilla\mastodon-login\index.php on line 125, referer: http://vanilla.test/index.php?p=/
[Thu Mar 22 18:05:13.458108 2018] [php7:notice] [pid 7480:tid 1588] [client 127.0.0.1:54545] PHP Notice: Undefined variable: json in C:\xampp-7.1.7\htdocs\vanilla\mastodon-login\index.php on line 126, referer: http://vanilla.test/index.php?p=/
[Thu Mar 22 18:05:13.459108 2018] [php7:notice] [pid 7480:tid 1588] [client 127.0.0.1:54545] PHP Notice: Trying to get property of non-object in C:\xampp-7.1.7\htdocs\vanilla\mastodon-login\index.php on line 126, referer: http://vanilla.test/index.php?p=/
[Thu Mar 22 18:05:13.474108 2018] [core:error] [pid 7480:tid 1588] (20024)The given path is misformatted or contained invalid characters: [client 127.0.0.1:54545] AH00127: Cannot map GET /mastodon-login/%3Cbr%20/%3E%3Cb%3ENotice%3C/b%3E:%20%20Undefined%20variable:%20json%20in%20%3Cb%3EC:/xampp-7.1.7/htdocs/vanilla/mastodon-login/index.php%3C/b%3E%20on%20line%20%3Cb%3E123%3C/b%3E%3Cbr%20/%3E%3Cbr%20/%3E%3Cb%3ENotice%3C/b%3E:%20%20Trying%20to%20get%20property%20of%20non-object%20in%20%3Cb%3EC:/xampp-7.1.7/htdocs/vanilla/mastodon-login/index.php%3C/b%3E%20on%20line%20%3Cb%3E123%3C/b%3E%3Cbr%20/%3E HTTP/1.1 to file, referer: http://vanilla.test/mastodon-login/?jwt=XXXXXXXX(ここは省略)
[Thu Mar 22 18:05:13.536108 2018] [core:error] [pid 7480:tid 1588] (20024)The given path is misformatted or contained invalid characters: [client 127.0.0.1:54545] AH00127: Cannot map GET /mastodon-login/%3Cbr%20/%3E%3Cb%3ENotice%3C/b%3E:%20%20Undefined%20variable:%20json%20in%20%3Cb%3EC:/xampp-7.1.7/htdocs/vanilla/mastodon-login/index.php%3C/b%3E%20on%20line%20%3Cb%3E123%3C/b%3E%3Cbr%20/%3E%3Cbr%20/%3E%3Cb%3ENotice%3C/b%3E:%20%20Trying%20to%20get%20property%20of%20non-object%20in%20%3Cb%3EC:/xampp-7.1.7/htdocs/vanilla/mastodon-login/index.php%3C/b%3E%20on%20line%20%3Cb%3E123%3C/b%3E%3Cbr%20/%3E HTTP/1.1 to file, referer: http://vanilla.test/mastodon-login/?jwt=XXXXXXXX(ここは省略)
コメント
やりとりしたJSONのlogを残すdebugバージョンを製作いたしますのでお試しください。
たいていMySQL関係でエラーが発生するようです。
@wakimoto 取り急ぎブランチv5.1を作成しました。
テスト環境ということでXAMPP(Apache)かと思われますが,Nginxでv5を実行すると確実にinvalidと返すので作成しました。(getallheadersのあたり)
v5.1でエラーが発生する場合,まずMySQLのvml_AutoLoginというテーブルに値がセットされているかどうかを確認してみてください。
なお,Nginx 1.12.2/PHP 7.0.28/MySQL 5.6環境下でのデモページを作成しました。
https://dev-forum.thedesk.top
よろしくお願いします。
CutlsPさん、対応ありがとうございます。ためしてみます。
@wakimoto さん
ありがとうございます。
こちらで以下の手順で再現を試みましたが、確認できませんでした。
・git clone してそのままのディレクトリ名で設置し、プラグイン有効化 → 失敗
・一度削除し、キャッシュクリア
・git clone して「Mastodon」にリネームしてプラグイン有効化 → 成功
・設定画面開く → 成功
一応、可能でしたら次の事をお試しいただけますでしょうか。
・cache/addon.php の削除(ポップアップのクリックで消えてると思いますが)
・conf/config.php の $Configuration['Plugins']['Mastodon'] 関連の項目を削除
@CutlsP さん、XAMPPでのテストです。
・vml_AutoLoginを一旦全レコード削除
・Mastodon Loginボタンを押す
・どこかのインスタンスを入力
・インスタンス側のページで承認ボタン
・vanilla側に戻りますが、「Whoops! The OAuth server did not return a valid response.」と出ます。
ログは
[Thu Mar 22 18:05:13.458108 2018] [php7:notice] [pid 7480:tid 1588] [client 127.0.0.1:54545] PHP Notice: Undefined variable: auth in C:\xampp-7.1.7\htdocs\vanilla\mastodon-login\index.php on line 125, referer: http://vanilla.test/index.php?p=/
[Thu Mar 22 18:05:13.458108 2018] [php7:notice] [pid 7480:tid 1588] [client 127.0.0.1:54545] PHP Notice: Undefined variable: json in C:\xampp-7.1.7\htdocs\vanilla\mastodon-login\index.php on line 126, referer: http://vanilla.test/index.php?p=/
[Thu Mar 22 18:05:13.459108 2018] [php7:notice] [pid 7480:tid 1588] [client 127.0.0.1:54545] PHP Notice: Trying to get property of non-object in C:\xampp-7.1.7\htdocs\vanilla\mastodon-login\index.php on line 126, referer: http://vanilla.test/index.php?p=/
[Thu Mar 22 18:05:13.474108 2018] [core:error] [pid 7480:tid 1588] (20024)The given path is misformatted or contained invalid characters: [client 127.0.0.1:54545] AH00127: Cannot map GET /mastodon-login/%3Cbr%20/%3E%3Cb%3ENotice%3C/b%3E:%20%20Undefined%20variable:%20json%20in%20%3Cb%3EC:/xampp-7.1.7/htdocs/vanilla/mastodon-login/index.php%3C/b%3E%20on%20line%20%3Cb%3E123%3C/b%3E%3Cbr%20/%3E%3Cbr%20/%3E%3Cb%3ENotice%3C/b%3E:%20%20Trying%20to%20get%20property%20of%20non-object%20in%20%3Cb%3EC:/xampp-7.1.7/htdocs/vanilla/mastodon-login/index.php%3C/b%3E%20on%20line%20%3Cb%3E123%3C/b%3E%3Cbr%20/%3E HTTP/1.1 to file, referer: http://vanilla.test/mastodon-login/?jwt=XXXXXXXX(ここは省略)
[Thu Mar 22 18:05:13.536108 2018] [core:error] [pid 7480:tid 1588] (20024)The given path is misformatted or contained invalid characters: [client 127.0.0.1:54545] AH00127: Cannot map GET /mastodon-login/%3Cbr%20/%3E%3Cb%3ENotice%3C/b%3E:%20%20Undefined%20variable:%20json%20in%20%3Cb%3EC:/xampp-7.1.7/htdocs/vanilla/mastodon-login/index.php%3C/b%3E%20on%20line%20%3Cb%3E123%3C/b%3E%3Cbr%20/%3E%3Cbr%20/%3E%3Cb%3ENotice%3C/b%3E:%20%20Trying%20to%20get%20property%20of%20non-object%20in%20%3Cb%3EC:/xampp-7.1.7/htdocs/vanilla/mastodon-login/index.php%3C/b%3E%20on%20line%20%3Cb%3E123%3C/b%3E%3Cbr%20/%3E HTTP/1.1 to file, referer: http://vanilla.test/mastodon-login/?jwt=XXXXXXXX(ここは省略)
です。
・http://vanilla.test/ は、ローカルのXAMPPに設定したバーチャルドメインです。
・vml_AutoLogin にはレコードは追加されています。
何かこちらの設定ミスでしょうか...
ソースはあまり見れていないのですが、気になっているのは、インスタンスから戻った時のURLが
http://vanilla.test/index.php?p=/entry/oauth2&code=XXXXXXX (ここは省略)
となっているのですが、mastodon-login/index.php では
if(isset($_GET["code"]) && isset($_GET["state"])){
となっているので、stateがセットされていなくてif文の中を通らないんじゃないかという点です。
よろしくお願いします。
@wakin さんの方、一度削除して一から試しました。うまくいきました!
●動作確認事項
・プラグインを有効にし、設定画面は単に開いて保存するだけ。
・マストドンアイコンのボタンを押し、インスタンスのドメインを入力(vocalodon.net)。
・インスタンス側で「承認」
・メールアドレスとアカウントの入力画面がでる。
・ここで新規のメールアドレスと新規のアカウント名を指定する。
・そのアカウントでログインされる。
・一度ログオフし、同様に別のインスタンスで登録
・先ほどのアカウント情報を入力
・同一アカウントに対し、複数のインスタンスでの認証ができるようになった。
・以後どちらのインスタンスでログインしても同じアカウントとして利用できる。
(アイコンは最後にログインに使ったインスタンスのものが使われるようです)
以上正常稼働と思われます。
●気になった点
すでにvanilla上に自分のアカウントがある状態でインスタンスとのヒモ付を行う場合、
・メールアドレスが新規のものでアカウント名が既存のアカウントと同一の場合、パスワードを要求される。パスワードが正しければ既存アカウントとひも付き、登録メールアドレスが上記で入力したメールアドレスに置換される。
・メールアドレスが既存のアカウントのものと同一でアカウント名が既存のアカウントとは異なる場合パスワードは要求されないが、既存アカウントとひも付く。アカウント名は入力したものに置換される。
これは後者の場合、アカウントの乗っ取りが発生してしまう可能性があるのではないでしょうか。メールアドレスとアカウント名両方でユニークチェックが行われ、パスワードを要求するのが用意かと思います。
以上、よろしくお願いいたします。
Nginxではエラー無くできましたがApacheではエラーが出ていたようです。(またgetallheaders関係)
両方対応させたつもりですのでよろしくお願いします。
追記(0:44)
エラーに関して:
最初のPHP Notice:...は再現できましたので出ないように訂正しました。
他のエラーに関しては再現できませんでした。エラー内容は意味不明な文字列にアクセスしようとして失敗した,ように見えます。
この意味不明文をURLデコードで解読すると
/mastodon-login/
Notice: Undefined variable: json in C:/xampp-7.1.7/htdocs/vanilla/mastodon-login/index.php on line 123
Notice: Trying to get property of non-object in C:/xampp-7.1.7/htdocs/vanilla/mastodon-login/index.php on line 123
となりNotice Errorになります。一応このエラーに関しては出ないように訂正しましたがまたエラーが出るかもしれません。
@wakimoto
ログイン時に既存ユーザーアカウントと連携させると、ログインは出来るんですがマストドン情報が紐付いてくれないという現象が出てたんで、あえてTwitterやFacebookの連携プラグインと違う動作をさせてたんですが、余計まずい方向になったようです。
これを元に戻したところ、連携時の既存のメールアドレスの入力についてはパスワードを要求するようになりました。
マストドンアカウントでログインするという事はこれで出来ますが、投稿内容を共有する等の連携をさせようと思うと、ログイン後に一度接続を解除してから、再度接続という手間が要るようになってます。
これはTwitterの連携プラグインでも同様の動作になっていますので、本体側をいじる必要がある部分なのかなあと思っています。
@CutlsP
5.2確認いたします!
@wakin
確認させてください。
これは、一度ログオフしないと投稿内容などの既存アカウントの内容が紐付いているように見えない、ということでしょうか?
@wakimoto
例えばフォーラムに意見を投稿した際に、同時にマストドンに同じ内容をポストするというような連携をさせようとしたときに、それに必要な情報(アクセストークン等)が、前述コメントの条件だと紐付けられないということです。
ログオフの必要は無く、ログイン後に
プロフィールを編集 → ソーシャル を開き、マストドンの「接続しました」を一度解除して、もう一度「接続」を選択すると連携投稿等に必要な情報が紐付けられます。
本家のフォーラム https://open.vanillaforums.com/ でもやはり同様の挙動が見られているのですが、どうなってるのかなあという感じです。
@CutlsP 間があいてしまってすみません。5.2をテスト環境に入れてみました。
うまく動作しました!
MasPlus の方は、「/php-mt/の設置場所」を設定したら以下のように表示されたのですが、
現状ではこれで動作していて、cssを書いていけば良いということでしょうか?
Chtomeで見た場合はスクロールバーが細くなるのですが他の環境ではデフォルトのスクロールバーが出るみたいです。
動作としては恐らく正常です。
Vanilla Mastodon Loginのはずが
Vanilla Mastdon Loginになってしまっています。
あとトゥートが重複しないようにする仕組みも考えているのでそれらを修正・実装して近いうちにバージョン6を出したいと思っています。
よろしくお願いします。
@wakimoto GitHubにてブランチv6を発行しました。
変更点
「このページをトゥート」を「このトゥートをシェア」に変更。Twitter,Facebook,LINE,PocketとAndroid標準シェア(WebShare API)に対応
ハッシュタグ表示システムは
https://dl.thedesk.top/php-mt.zip
ハッシュタグTL表示システムは
・Firefox等にUI最適化(横スクロール全廃)
・トゥートの重複を解消
を行っています。
よろしくお願いします。
@CutlsP
v6をローカルテスト環境に入れてみました。
自分のavatarがリンク切れになったのですが、これは関連づけしているインスタンス側の仕様が変わってサーバ内ではなくS3に保存するようにしたためアバターのURLが変わったことが原因です。
で、再度マストドン連携をやり直してみたのですが、変化はありませんでした。
画像のリンク先は一度登録されると変更されない仕様でしょうか? この辺の仕組みはなんどか変わっていると思いますが、ログイン時に最新の情報に更新するか、ローカルに画像そのものをキャッシュするかしないとインスタンス側の変更に追随できないなーと思っています。
なお、ここの本番環境はまだ古いスクリプトで動かしていますが、CutlsPさんのアバターがリンク切れになっているのはなぜでしょう?
以上、よろしくお願いいたします。
私のいるkirishima.cloudでもFastlyからConoHaに移行したみたいで、APIではリンク切れになります。
これはAdminに連絡済みで、スクリプトの不具合ではないようです。
大変遅くなりましたが、本番環境(つまりここ)のマストドン連携をCutlsPさんのv6にアップデートしました!
こちらで試したところでは良好です。
・複数のマストドンアカウントを一つのフォーラムアカウントに連携できます。メールアドレスに同じ者を設定してください。
・不具合があった場合にはこのスレッドに報告するか、もしログインが出来ない場合には @tomoki@vocalodon.net にご連絡ください。
複数のマストドンアカウントを連携する件、うまくいきました。
メールアドレスとユーザー名が既存のVanillaのアカウントと一致すると、パスワードの入力欄が追加され、正しく入力できれば認証されるということだと思いますが、マストドンアカウントの入力欄に何を入力しても(しなくても)認証されます。
もとより、なぜここに手動でマストドンアカウントを入力する欄があるのか不明です。既にOAuthでaccrとってきてますよね。ひょっとして要らないのでは……。
それと、プロフィールにマストドンアカウント欄がありますが、自動で更新されたり追加されないようです。好きなように編集できます。そもそも手動で入力する、対外的に見せる為の任意項目でしたでしょうか?(最初の登録時の事を忘れてしまったので経緯を確認できませんでした)
もう一つ。アカウント連携を解除する方法がなさそうです。不要という判断もありかと思いますが、実際のところはいかがでしょうか?
のえるさんご報告ありがとうございます。
マストドンアカウントを入力する欄については、おっしゃるようにプロフィール覧に表示させるためのフィールドです。連携機能は複数アカウントと紐付けることもできますし、どのアカウントと紐付けているかも外部からはわからないようになっているので、プロフィールに手動で書いてくださいね、という趣旨です。
連係解除についてはたしかにないですね。今後の課題とさせてください。
それから現在バグが見つかったので一旦古いバージョンに戻しました。