Support » Plugin: Gianism » プラグインを削除してしまった際のログイン情報について

  • Resolved hosaka

    (@hosaka)


    現在Gianismを用いてFacebookログインを実装しているのですが、一度誤ってプラグインを削除してしまいました。
    削除前に登録およびログインされていたユーザ情報で再度ログインを行おうとすると『Oops, Failed to Authenticate. This Facebook account is already connected with others.』というエラーが出てきてしまうのですが、削除前のログイン情報に再紐づけすることは仕様上難しいのでしょうか?

    運用サイトにおいて既にGianismから登録していただいているユーザもいたためどうにか再紐づけを行いたく、復旧方法が存在する場合はご教授いただきたく存じます。

    お手数をお掛け致しますが、ご確認のほどよろしくお願い致します。

Viewing 6 replies - 1 through 6 (of 6 total)
  • Plugin Author Takahashi Fumiki

    (@takahashi_fumiki)

    @hosaka

    プラグインの削除をどのように行ったのかによるのですが、管理画面から停止して削除をクリックすると、「データを削除しますか?」というダイアログが出ます。そこで「削除」を選んだ場合は、同意の上とみなされ、Gianismに関する全てのデータが削除されます。復旧はできません。

    なぜログインできなくなるかというと、たとえばFacebookでjoe@example.comというメアドで登録している人のケースを例に説明します。

    1. JoeがGianismではじめてログインする。メールアドレスをfacebookから取得し、 joe@exmample.jp を元にユーザーを作成。ユーザーメタにfacebook IDなどが保存される。
    2. Gianismプラグインを削除する。すべてのメタデータとGianismの設定が削除される。
    3. もう一度Gianismを有効にする。
    4. Joeはfacebookでログインしようとするが、同じメールアドレスを持ったユーザーがすでに存在しているにも関わらず、facebook IDを持っていないので、重複登録とみなされる。

    という経緯です。

    ユーザー個人の紐付けに関しては、普通にjoe@example.comのWordPressアカウントでログインし、プロフィール画面から紐付けを行うことができます。

    ただ、全員を一斉に行う方法はないので、登録ユーザー全員に周知する必要があります。

    @takahashi_fumiki

    ご回答誠にありがとうございます。

    ひとつ気になったのですが、usermeta情報を手動で復元させれば再度ログインできるような気がしたのですが、可能でしょうか?

    仰る通りGianismに関するmeta情報はプラグイン削除によりすべて消えてしまっていますが、ユーザーデータ自体は残っており、ユーザ名にfacebook IDが用いられているため必要な情報は実はまだ残っていて復元ができるのではないかと思いました。
    (そもそも手動でusermetaが編集できるのかまでは存じておりませんが。。。)

    • This reply was modified 1 year, 1 month ago by hosaka.

    投稿した後思いましたが結局ご提案いただいた

    >ユーザー個人の紐付けに関しては、普通にjoe@example.comのWordPressアカウントでログインし、プロフィール画面から紐付けを行うことができます。

    >ただ、全員を一斉に行う方法はないので、登録ユーザー全員に周知する必要があります。

    とやってることは同じなんですかね

    Plugin Author Takahashi Fumiki

    (@takahashi_fumiki)

    @hosaka

    MySQLの知識があること前提になってしまうのですが、削除されるのは _wpg という接頭辞がついたユーザーメタになります。
    ユーザーメタを全部復元してしまうとまずいことが起きるかもしれませんが、バックアップなどからGianismに関連するメタデータだけを戻すことができれば、FacebookからFacebookアプリを削除していない限りログインできるはずです。

    @takahashi_fumiki

    DBを参照し無事に復旧することができました。

    以下、復旧に際する条件や対応方法などとなります。
    ※誤っておりましたらご指摘ください。
    ※DB名やテーブル名などは適宜環境に合わせて読み替えてください。

    【復旧条件】

    ・Gianism削除前にfacebookログインしていたユーザの情報
     → wp_users内にある ‘fb-‘ から始まる『user_nicename(ユーザー名)』が必要になります。

    ・facebookアプリより登録情報を消していない
     → 私の環境では残っていたため消してしまった場合の動作は未検証ですが @takahashi_fumiki 様よりいただいた情報を基に条件として定義させていただきます。

    【復旧方法】

    1. wp_users.user_nicename から ‘fb-‘ を含むユーザを抽出

    2. 該当ユーザの wp_usermeta に Gianism用の レコード(_wpg_facebook_id, _wpg_facebook_mail, _wpg_unknown_password)を挿入

    3. _wpg_facebook_id に wp_users.user_nicename の ‘fb-‘以降の数値を入れる

    4. _wpg_facebook_mail に wp_users.user_email を入れる

    5. _wpg_unknown_password に ‘1’ を入れる ※こちら解析不足ではありますが用途が不明だったためとりあえず ‘1’ にしました。

    6. 復旧完了

    以上となります。

    なお復旧手順はSQLで実現できました。※実行環境 MySql 5.5.61


    INSERT INTO wordpress.wp_usermeta (umeta_id, user_id, meta_key, meta_value) SELECT NULL, wp_usermeta.user_id, '_wpg_facebook_id', SUBSTRING(wp_users.user_nicename, 4) FROM wp_usermeta,wp_users WHERE wp_usermeta.user_id = wp_users.ID AND meta_key = 'nickname' AND user_nicename like 'fb-%';


    INSERT INTO wordpress.wp_usermeta (umeta_id, user_id, meta_key, meta_value) SELECT NULL, wp_usermeta.user_id, '_wpg_facebook_mail', wp_users.user_email FROM wp_usermeta,wp_users WHERE wp_usermeta.user_id = wp_users.ID AND meta_key = 'nickname' AND user_nicename like 'fb-%';


    INSERT INTO wordpress.wp_usermeta (umeta_id, user_id, meta_key, meta_value) SELECT NULL, wp_usermeta.user_id, '_wpg_unknown_password', '1' FROM wp_usermeta,wp_users WHERE wp_usermeta.user_id = wp_users.ID AND meta_key = 'nickname' AND user_nicename like 'fb-%';

    この度は早急にお返事をいただくなど、復旧に際しご対応いただき誠にありがとうございました。
    こちらのトピックで今後同様の問題を抱える皆様のお役に立てれば幸いです。

    よろしくお願い申し上げます。

    Plugin Author Takahashi Fumiki

    (@takahashi_fumiki)

    @hosaka

    解決したようで何よりです。
    ちなみに、 _wpg_unknown_password の利用目的ですが、そのフラグが立っている場合はユーザーのプロフィール画面にパスワードに関するアラートが出ます。SNS連携でアカウントを作成した場合、ユーザーは自分のパスワードを知らない状態なので、再設定を促すメッセージが出ます。

Viewing 6 replies - 1 through 6 (of 6 total)
  • The topic ‘プラグインを削除してしまった際のログイン情報について’ is closed to new replies.