Mastodon Social ConnectのスイッチをONにする→エラー「Whoops! There was an error.」
ログを見ると以下のようになっていました。
PHP Fatal error: Uncaught Error: Call to a member function getInfo() on null in C:\xampp-7.1.7\htdocs\vanilla\applications\dashboard\controllers\class.settingscontroller.php:1451\nStack trace:\n#0 C:\xampp-7.1.7\htdocs\vanilla\applications\dashboard\controllers\class.settingscontroller.php(1372): SettingsController->enablePlugin('mastodon_vanill...', 'all')\n#1 C:\xampp-7.1.7\htdocs\vanilla\library\core\class.dispatcher.php(832): SettingsController->plugins('all', 'mastodon_vanill...')\n#2 C:\xampp-7.1.7\htdocs\vanilla\library\core\class.dispatcher.php(261): Gdn_Dispatcher->dispatchController(Object(Gdn_Request), Array)\n#3 C:\xampp-7.1.7\htdocs\vanilla\index.php(29): Gdn_Dispatcher->dispatch()\n#4 {main}\r\n thrown in C:\xampp-7.1.7\htdocs\vanilla\applications\dashboard\controllers\class.settingscontroller.php on line 1451, referer: http://vanilla.test/index.php?p=/dashboard/settings/plugins
コメント
一応Oauthでできました。(Cutls Pさんのお力です)
現在のところ、マストドン上で指定している表記名(みなさんが主に日本語で入れているフィールド)がユーザ名として指定されるのですが、そうじゃなくマストドンのアカウント名が入る方がよいですね。
その後やってみたこと。
OAuth SSOオプションで
・Display Nameにdisplay_nameにする。→初期状態。OAuth承認後の確認画面でDisplay Name欄が非表示になり、ユーザ名にマストドンの表示名(display_name)が暗黙で適用される。前述の問題です。
・Display Nameをusernameにする。→OAuth承認後の確認画面でDisplay Name欄が表示され、空欄で手入力を促される。これはこれで面倒です。
ちょっと不可解なのは(OAuth SSOの仕様だと思いますが)、Display Nameがログインアカウント名になっている点です。
意味としては
Vanilla上のDisplay Name=マストドンのdisplay_name
Vanilla上のFull Name=マストドンのdisplay_name
Vanilla上のUser ID=マストドンのusername
となり、VanillaのログインアカウントやプロフィールのURLはUser IDになっている、のが通常の動きかなと思うのですが、仮にこのOAuth SSOの仕様に合わせるとした場合でも
Vanilla上のDisplay Name=マストドンのusername
Vanilla上のFull Name=マストドンのusername
Vanilla上のUser ID=マストドンのusername
にした上で、
OAuth承認後の確認画面でDisplay Name欄が表示され、デフォルトでマストドンのusernameが入っていて、手修正可能、というのが理想かなと思います。
まだ検証を行ったりはしていないのでわかりませんが、
Vanillaの仕様上名前に@ が使えないからなのではないかと思います。
次のアップデートで@ を-に変えたデータを送るように修正いたします。
ありがとうございます!
プロフィール変更時にユーザ名に絵文字があると保存ができないという報告がありましたので、とりいそぎusernameに変更しました。現状はユーザ名を手入力する仕様になります。
[vanilla-mastdon-login ver.3](https://dl.thedesk.top/mastodon-login.zip)を公開しています。
適用方法は同様ですが,
SSOの設定を
- Display Name:id
- Full Name:user_id
- User ID:username
にしてください。
早速変えてみました!
良さそうですね。@が-、.が_に置換されています。
実装後で恐縮なんですが、マストドンアカウントでSSOするVanilla Forumsのプラグインがちょっと出来そうです。
https://github.com/wakin-/mastodon_vanillaForums
・マストドンアカウントで新規登録
・登録済みのユーザにマストドンアカウントをひも付け
・ひも付けの解除
の動作を確認済みです。
・ディスカッションへのリンクをマストドンにシェアするボタンの設置
が未実装です。
ここで動作確認しています。
https://summpy.wakin.site/
もしよろしければお試しください。
@Cutls P さんの、つまりここの現在のマストドンログインですが、ログインする度に認証を求められて、認証済みアプリが延々増えていく感じです。動作確認できますか?
@wakin さんのですが、Mastodonドメインを再入力しないで済ますうまい方法はありませんでしょうか?
ここが共有しておきたい知恵の部分なんですよね……。
(Mastodon日本語メタフォーラムに書いたコレです https://discourse.mstdn.jp/t/mastodon/233/2)
@のえる さん
ブラウザに登録しているマストドンを呼び出す方法としてプロトコルハンドラ( https://github.com/tootsuite/mastodon/pull/4511 )があるようなんですが、マストドンは
・ アカウントのフォロー
・ トゥートの投稿
の用途でしか使えないようです。
wakinさん、のえるさん、情報ありがとうございます。
・現状の実装の問題点:毎回インスタンスに登録アプリが増えていく
・wakinさんの実装の問題点:ドメインを毎回登録しなければならない
ということですね。
ちょっと僕の方ではまだちゃんとソースを読めていないので、今度時間がある時に見てみます。
いずれにしても既存アカウントとあとからヒモ付けできるのであれば、現状はマストドン連携は非推奨でアカウントを作って入ってもらう方がよいですかね。
連携プラグインですが、最後に入力した有効なドメインをドメイン入力画面の初期値にしてみました。
https://summpy.wakin.site/
https://github.com/wakin-/mastodon_vanillaForums
wakinさんありがとうございます。テスト環境でためしてみます!
現行のvanilla-mastodon-loginについてver.4をリリースしました。
主な変更点
お試し下さい。
https://dl.thedesk.top/vanilla-mastodon-login.zip?ver-4
おお、wakinさんとCutls Pさんの2つの連携プラグインが並走してますね!こちらの確認が追いつてなくてすみません。(ここの立ち上げのために他のことを疎かにしていたので諸々追われてますw)
Cutls Pさんの最新版は現状運用中のVanillaに適用した場合の副作用とか、すでに連携済みの場合のマイグレーションみたいなものは考慮されてますでしょうか?
プラグインとmastodon-loginは独立して動きますので、一旦プラグイン無効の状態で試してみて、問題なければ有効化してみてください。
また、現在連携済みのアカウントの場合は一旦ログアウトしてからログインするだけで適用されます。
Cutlsさんおつかれさまです。
試してみましたが、挙動に難点あったので戻しました。
すぐに戻したため、プラグインの方は未テストです。
よろしくお願いいたします。
次回、wakinさんのプラグインを試してみます。
よりこのフォーラムに近いテスト環境を構築できたので検証してみます。
インスタンス連携解除はプラグインを導入するとフォーラムにボタンが表示されます。(もちろん最初に選択できるようにアップデートします。)
vanillaとマストドンのアカウントは1対1が前提で作ってしまいました。エラーに関しては出ないように細心の注意を払ったつもりでしたが足りなかったようです。もちろん意図的に1対多を弾いているわけではありません。
すぐにアップデートを発行いたしますのでしばらくお待ち下さい。
Cutls P さん、了解しました。
でも、そんなに急がなくても大丈夫ですよ!
Cutls Pさんのソースコードがプッシュされました。
https://github.com/donkenorg/vanilla-mastodon-login
(v4ブランチに上がってます)
これはv4ですので上のzipと同じものがプッシュされたということで良いでしょうか?>Cutls Pさん
あと、 https://github.com/donkenorg/ オーガニゼーションは今後積極的に使っていきたいので、みなさんのアカウントも追加していきたいです。参加したい方はgithubアカウントを教えてください!
wakinさんのマストドン連携プラグイン試してみました。
wakinさんの用意されたvanillaで試しました。
ローカル環境(xampp)でインストールしようと試みたのですがうまくいきませんでした。
PHP Fatal error: Uncaught Error: Call to a member function getInfo() on null in C:\xampp-7.1.7\htdocs\vanilla\applications\dashboard\controllers\class.settingscontroller.php:1451\nStack trace:\n#0 C:\xampp-7.1.7\htdocs\vanilla\applications\dashboard\controllers\class.settingscontroller.php(1372): SettingsController->enablePlugin('mastodon_vanill...', 'all')\n#1 C:\xampp-7.1.7\htdocs\vanilla\library\core\class.dispatcher.php(832): SettingsController->plugins('all', 'mastodon_vanill...')\n#2 C:\xampp-7.1.7\htdocs\vanilla\library\core\class.dispatcher.php(261): Gdn_Dispatcher->dispatchController(Object(Gdn_Request), Array)\n#3 C:\xampp-7.1.7\htdocs\vanilla\index.php(29): Gdn_Dispatcher->dispatch()\n#4 {main}\r\n thrown in C:\xampp-7.1.7\htdocs\vanilla\applications\dashboard\controllers\class.settingscontroller.php on line 1451, referer: http://vanilla.test/index.php?p=/dashboard/settings/plugins
その先詳細は調べていません。取り急ぎご報告です。
@wakimoto さん
すみません。使い方を省いてしまっていました。
plugins/配下に「Mastodon」というディレクトリ名で設置してみてください。
私の方でも同様の現象が発生し、上記の方法で解消しました。
@wakin さんのプラグイン、自分の環境でも有効化できず困っていました。ディレクトリ名の変更、試してみます。
私のプラグインをダウンロードされた方へ
他のアカウント連携プラグインとの連動関連で修正を加えました。
お手数ですが class.mastodon.plugin.php を置換いただければと思います。
https://github.com/wakin-/mastodon_vanillaForums
v5をプッシュしました。
GitHub donkenorg/vanilla-mastodon-login
wakinさん、CutlsPさん、対応ありがとうございます!
こちらでは明日確認を行います!
wakinさんのやってみました。
・一旦プラグインをpluginsから削除(Vanillaのキャッシュのクセで再構築するには一旦削除する必要があるっぽいので)
・Mastodonディレクトリにリネームして再配置
・fixのリンクがポップアップされるのでクリックしてプラグインキャッシュの再構築
・プラグインの有効化(今回は成功)
・プラグインの設定画面を開く→何も出ない
・ログインし直す→ログイン機能はデフォルトのまま、でした。
設定画面が開けないあたりがあやしそうですね。
CutlsPさんのを試してみました。
1) テスト環境でやったのでこちらのテスト環境の作り方の問題かもしれませんが、インスタンス側で承認ボタンを押した後に
「Whoops! The OAuth server did not return a valid response.」
と出ました。
mastodon-login/index.php
に戻ると情報は取れているのですが、ログインに失敗するようです。
2) あと、マニュアルで気になった点としては、
上書きの確認はapplicationsの件だと思いますが、その記述がないので混乱するかもしれません。
3) それから、これはこのプラグインを導入する方のスキルにもよるのですが、環境によっては .htaccessに
RewriteCond %{REQUEST_URI} !(^/mastodon-login/)
のような記述がないと mastodon-login/index.php に遷移した時にエラーになるのでそのような記述もあったほうがいいのかなと思いました。