フォーラムのマストドンアカウント連携

3月 2018 編集されました カテゴリ: TODO

現状はただのカスタムフィールドにマストドンアカウントを入れているだけですが、

後者はちょっと手間がかかりますが、前者は簡単にできるはず。

«1

コメント

  • 一応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が入っていて、手修正可能、というのが理想かなと思います。

  • 3月 2018 編集されました
    マストドンログインの担当をさせていただきましたCutls Pです。

    まだ検証を行ったりはしていないのでわかりませんが、
    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をリリースしました。
    主な変更点

    • オートログインを実装しました。ある程度安全性が担保された形でブラウザに保管されます。
    • MySQLが前提となりました。(ホスト名等はフォーラムの設定を取得します。)
    • プラグインを内包しています。(MasPlus)
      • ハッシュタグタイムラインをサイドバーに表示できます(インストール時)。
      • ログイン情報を使って現在見ているページをシェアできます。(マストドン連携がオフの場合もMastoshare等を利用できます。)
      • オートログイン情報を削除できます。

    お試し下さい。
    https://dl.thedesk.top/vanilla-mastodon-login.zip?ver-4

  • おお、wakinさんとCutls Pさんの2つの連携プラグインが並走してますね!こちらの確認が追いつてなくてすみません。(ここの立ち上げのために他のことを疎かにしていたので諸々追われてますw)

    Cutls Pさんの最新版は現状運用中のVanillaに適用した場合の副作用とか、すでに連携済みの場合のマイグレーションみたいなものは考慮されてますでしょうか?

  • 現在運用中のVanillaに適用した場合も問題ないと思います。 (検証が落ち着いていない場合があります。特にこのフォーラムで適用されているテーマについては検証できていませんが、もし不具合があってもデザインが少し崩れるだけです。)
    プラグインとmastodon-loginは独立して動きますので、一旦プラグイン無効の状態で試してみて、問題なければ有効化してみてください。

    また、現在連携済みのアカウントの場合は一旦ログアウトしてからログインするだけで適用されます。
  • 3月 2018 編集されました

    Cutlsさんおつかれさまです。

    試してみましたが、挙動に難点あったので戻しました。

    • これまでは、すでにどこかのインスタンスのアカウントとヒモ付を行っている人が、別のインスタンスのアカウントでログインしようとした場合には、同じメールアドレスを入力しパスワードを入力し直すことでヒモ付けが成功し、vanillaとマストドンアカウントが1対多で紐づけ可能でした。
    • v4を試してみたところ
      • (エラーが出てすぐ戻したので正確にはよくわかりませんが)、同じメールアドレスを入れてもこれまでのようにはならずヒモ付けが成功しませんでした。
      • 強制的にヒモ付けたインスタンスが記憶されるため、インスタンス選択ができません。デフォルト操作としてはこれで良いのかもしれませんが、そのインスタンスからは退会し他のインスタンスに登録される方もいらっしゃるので、登録済みのインスタンスが表示され「これでログインしますか?あるいは違うインスタンスを(これまでどおり)入力してそれでログインしますか?」の選択肢が必要かと思います。

    すぐに戻したため、プラグインの方は未テストです。

    よろしくお願いいたします。

  • 次回、wakinさんのプラグインを試してみます。

  • 意図しない挙動をしてしまい申し訳ありません。

    よりこのフォーラムに近いテスト環境を構築できたので検証してみます。

    インスタンス連携解除はプラグインを導入するとフォーラムにボタンが表示されます。(もちろん最初に選択できるようにアップデートします。)
    vanillaとマストドンのアカウントは1対1が前提で作ってしまいました。エラーに関しては出ないように細心の注意を払ったつもりでしたが足りなかったようです。もちろん意図的に1対多を弾いているわけではありません。

    すぐにアップデートを発行いたしますのでしばらくお待ち下さい。
  • Cutls P さん、了解しました。

    でも、そんなに急がなくても大丈夫ですよ!

  • 3月 2018 編集されました

    Cutls Pさんのソースコードがプッシュされました。

    https://github.com/donkenorg/vanilla-mastodon-login
    (v4ブランチに上がってます)

    これはv4ですので上のzipと同じものがプッシュされたということで良いでしょうか?>Cutls Pさん

    あと、 https://github.com/donkenorg/ オーガニゼーションは今後積極的に使っていきたいので、みなさんのアカウントも追加していきたいです。参加したい方はgithubアカウントを教えてください!

  • wakinさんのマストドン連携プラグイン試してみました。

    • wakinさんの用意されたvanillaで試しました。

      • 紐付けられたメールアドレスが同じ場合は同じアカウントとして認識され、複数のインスタンスとの連携ができて理想的ですね。
      • 連携せずにアカウントを作ることはできないのでしょうか?
    • ローカル環境(xampp)でインストールしようと試みたのですがうまくいきませんでした。

      • githubから落としたソースをmastodon_vanillaForumsディレクトリに展開し、vanillaのpluginsディレクトリに配置*
      • 管理画面のキャッシュを更新するとMastodon Social Connect が出てくる。
      • 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

    その先詳細は調べていません。取り急ぎご報告です。

  • @wakimoto さん
    すみません。使い方を省いてしまっていました。
    plugins/配下に「Mastodon」というディレクトリ名で設置してみてください。

    私の方でも同様の現象が発生し、上記の方法で解消しました。

  • @wakimoto 返信遅くなり申し訳ありません。GitHubのv4ブランチは現行最新コードにマストドンロゴの画像(v1で内包)を加えたデータそのままとなっています。
    @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) あと、マニュアルで気になった点としては、

    mastodon-login と plugins をVanilla Forumのルート上に展開します。
    上書きの確認が出ますが,Mastodonのロゴ画像です。テーマによっては使用しませんので,
    スキップしていただいても構いません。

    上書きの確認はapplicationsの件だと思いますが、その記述がないので混乱するかもしれません。

    3) それから、これはこのプラグインを導入する方のスキルにもよるのですが、環境によっては .htaccessに

    RewriteCond %{REQUEST_URI} !(^/mastodon-login/)

    のような記述がないと mastodon-login/index.php に遷移した時にエラーになるのでそのような記述もあったほうがいいのかなと思いました。

コメントするにはサインインまたは登録して下さい。