Support Forum Fumiki
translate このフォーラムは日本語でも利用できます。ログインして、言語設定を変更してください。
Forum Replies Created
-
AuthorPosts
-
Fumiki
Keymaster大変すみません。見落としておりました。
Twitterの画面に遷移し、自分が登録したアプリの情報が表示されたということは、WordPressに戻ってきて、ユーザー情報を取得したあとのエラーだと思われます。
その場合、たぶんですが、WordPressの設定で「誰でも登録できる」にチェックが入っておらず、なおかつGianismの設定で「WPの設定に従う」となっているのではないでしょうか?
その場合、twitterアカウントでユーザーが新規登録できなくなります。
設定箇所は 設定 > Gianism設定 > 設定 です。(設定ばかりですみません……)
Fumiki
Keymaster結局、私のほうのプログラムを変更することにいたしました。
どのようなプログラムなのかはわからないのですが、そこ変更しても根本的には解決しないと思われます。
というのは、
_wpg_twitter_idを持たないユーザーはtwitterでログインしていないからです。そのデータが見つからないということは……– テーブル接頭辞が違う
– そもそも見ているデータベースが違う
– いままで一人もtwitterでログインしていなかったなどの可能性が考えられます。ちなみに、同様のデータで私が管理しているサイトのDBを探して見たところ、2,000レコード以上が見つかりました。ちなみに、私自身バージョン1からずっと使っていますので、「バージョンを上げたら以前ログインできていた人がログインできなくなった」という事象には遭遇していません。一時期mixiログインにそういった不具合はありましたが……
Fumiki
Keymasterあ、すみません。もしかすると、テーブル接頭辞は wp5_ ですか? これはwp-config.phpに記載されている値です。であれば、上記のクエリは次のようにする必要があります。
SELECT * from wp5_usermeta WHERE meta_key LIKE ‘%twitter%’
もし私の仮説が正しければ、いままでいただいていた「情報がなかった」ということは間違いになります。
ただ上記の検索結果で気づいたのですが、他のカラムのmeta_keyがwp5_capabilitiesなどと「wp5_」と頭につく文字のものがいくつかあったのですが、twitterのidを表すカラムのmeta_keyは「_wpg_」が頭について、_wpg_twitter_id となっていました。他に2箇所(_wpg_twitter_screen_name,
_wpg_unknown_password)。これは変ではありませんか???いえ、変ではないです。
wp5_capabilities になぜ wp5_ が付いているかというと、WordPressは一つのユーザーテーブルを共有する機能があって、その場合に Aというサイトで管理者の人が Bというサイトでも管理者になるという状況を避けるために、権限(capability)にはテーブル接頭辞がつくようになっています。
Gianismの場合は、_wpg_という接頭辞をつけることで、他のプラグインがtwitter_id という値を挿入してもおかしくならないようにしています。
Fumiki
Keymasterなるほど。1000人もいるのであれば、ログインできないと困りますね。
しかしながら、_wpg_twitter_idがないとそもそもtwitterによるログイン自体ができないはずです。
また、リダイレクト先を変更するgianism_redirect_toフィルターの時点ですでにユーザーの作成は完了しているので、分岐についてはあまり関係ありません。途中で私がコードを変更していた場合はこの限りではないのですが……
取り急ぎ1386の方のことは忘れていただき、以下のクエリを発行して確認していただけますでしょうか。
SELECT * from wp_usermeta WHERE meta_key LIKE '%twitter%'
これでtwitter IDっぽいやつが存在していないかどうか、確認していただけますでしょうか。おそらく、データが大量に取れてしまうとは思いますが。
その他、以下の可能性もあわせて検証してください。
- そもそもtwitterでログインできていたか。以前Gianism以外のプラグインでログインできていたのではないか。
- 現在データを調査しているサーバは本番で稼働しているか。
Fumiki
KeymasterGianism 1.0のソースを見てみると、この頃からログインIDのカラム名は ‘_wpg_twitter_id’ ですね。
https://plugins.svn.wordpress.org/gianism/tags/1.0/sdks/twitter/twitter_controller.php
したがって、次のようなことはないと思うのですが……
Gianism1.0ログインの場合、_wpg_twitter_id はカラム自体がありません。
テストのために twitterアカウントの接続を解除したということはありませんか? デバッグなどの過程でよくあることだとは思うのですが。
1. 初回にtwitterでログインし、アカウントを作成する
2. プロフィール画面でtwitterの接続を解除する(これにより、_wpg_twitter_idがなくなる)
3. 再びログインを試みる(重複するアカウントが存在しないので、新しいユーザーを作成)その他、1386のユーザーのユーザーメタをすべて取得して、差し支えない範囲で教えてもらえるとなにかわかるかもしれません。
SELECT * FROM wp_usermeta WEHRE user_id = 1386
Fumiki
KeymasterGianismはtwitterのユーザーIDを利用しており、それは1.0の頃から変わっていないのですが……
ianism1.0で以前から会員登録を受付ておりますが、今回Gianism3.0.3にバージョンアップ(同時に、wordpressを3.8.3→4.7.3
以下のようなSQL文でtwtter IDを取得できるのですが、その違い(以前のユーザーと新しいユーザー)がどうなっているかを教えていただけますか? phpMyAdminなどから発行してください。
SELECT u.user_login, um.meta_value FROM wp_usermeta AS um INNER JOIN wp_users AS u ON um.user_id = u.ID where um.meta_key = '_wpg_twitter_id'
※ テーブルプレフィックスをwp_から変更している場合は、上記の文も変更してください。
Fumiki
Keymaster以下に該当するメッセージは出ないはずなのですが、似ている箇所としては「ログインしていますね?」というものがあります。
そのページでは「していますね?
« 戻る」という文字のみ表示されてしまいますこれはすでにログインしているユーザーがtwitterでログインしようとした場合に表示されます。このケースには該当しますか?
閲覧履歴を削除、つまりWordPressにログインしていない状態にすることで正常に動作するとのことで、もしやと思いました。
ちなみに、このボタンは ‘gianism_login` などの関数によって自力で表示しているものでしょうか? だとすれば、その部分はログインユーザーに対して表示すべきではなく、ログインしていないユーザーにだけ表示すべきです。
// ユーザーがログインしていない場合だけログインボタンを表示 if ( ! is_user_logged_in() ) { gianism_login(); }Cookieを削除したら動くということは、サーバーのエラーではないと思われますので、上記ご確認ください。
-
This reply was modified 8 years, 7 months ago by
Fumiki. Reason: 条件式が間違っていた
Fumiki
Keymasterおそらくなのですが、セッション機能が有効でないような気がします。キャッシュプラグインなどはなにか利用されていますでしょうか。ロリポップではセッションが利用可能なので、その問題ではないような気がします。
また、twitterのアプリケーション登録を済ませているかも同時にご確認ください。
-
AuthorPosts