Support Forum 「twitterログイン」できない
translate このフォーラムは日本語でも利用できます。ログインして、言語設定を変更してください。
Stand on the shoulders of Giants! › Forums › Customer Support / カスタマーサポート › 「twitterログイン」できない
- This topic has 15 replies, 3 voices, and was last updated 4 years, 1 month ago by dorabull2020.
-
AuthorPosts
-
March 31, 2017 at 2:47 am #261fb-1848993692019106Participant
初めまして。https://wordpress.org/plugins/gianism/ よりGianism(3.0.3)をダウンロードして、使っているwordpress で有効化いたしました。その後プレミアム会員(? 月額980円)の登録も済ませました。
取り急ぎ、「twitterログイン」のみ試しているのですが、「twitterログイン」ボタンを押すと、http://mydomain/twitter/login/?redirect_to=http://onlinelanguage.info/wp-admin/profile.php&_wpnonce=8855f54414 (URLデード後ずみ)に遷移し、そのページでは「していますね?
« 戻る」という文字のみ表示されてしまいます(タブにはInternal Sever Errorの文字)。
当方のサーバーはlolipopでphpは5.6(モジュール)、wordpressは4.7.3の環境です。対処方法をご指導いただけますか?
March 31, 2017 at 3:19 am #262FumikiKeymasterおそらくなのですが、セッション機能が有効でないような気がします。キャッシュプラグインなどはなにか利用されていますでしょうか。ロリポップではセッションが利用可能なので、その問題ではないような気がします。
また、twitterのアプリケーション登録を済ませているかも同時にご確認ください。
March 31, 2017 at 5:14 am #263fb-1848993692019106Participant未明にもかかわらず早速のご返信、ありがとうございます。ご指摘の2点について確認してみましたが、対処すべき点はありませんでした。しかし、「キャッシュ」というご指摘からもしやと思い、ブラウザの「閲覧履歴」を削除いたしましたところ、「twitterの認証ページ」が現れ、目的のページにたどり着くことができました。
しかし、何回かテストをしてみますと、毎回ブラウザの「閲覧履歴」を削除しないと正常な遷移をせず、ブラウザの「閲覧履歴」を削除しないと冒頭ご相談申し上げた症状が出ている次第です。
引き続き、アドバイスを賜ればありがたいです。どうぞよろしくお願いいたします。March 31, 2017 at 12:09 pm #264FumikiKeymaster以下に該当するメッセージは出ないはずなのですが、似ている箇所としては「ログインしていますね?」というものがあります。
そのページでは「していますね?
« 戻る」という文字のみ表示されてしまいますこれはすでにログインしているユーザーがtwitterでログインしようとした場合に表示されます。このケースには該当しますか?
閲覧履歴を削除、つまりWordPressにログインしていない状態にすることで正常に動作するとのことで、もしやと思いました。
ちなみに、このボタンは ‘gianism_login` などの関数によって自力で表示しているものでしょうか? だとすれば、その部分はログインユーザーに対して表示すべきではなく、ログインしていないユーザーにだけ表示すべきです。
// ユーザーがログインしていない場合だけログインボタンを表示 if ( ! is_user_logged_in() ) { gianism_login(); }
Cookieを削除したら動くということは、サーバーのエラーではないと思われますので、上記ご確認ください。
- This reply was modified 7 years, 8 months ago by Fumiki. Reason: 条件式が間違っていた
March 31, 2017 at 1:57 pm #266fb-1848993692019106Participantご連絡ありがとうございます。下記を使用したところ、無事解決いたしました。御礼申し上げます。が、
// ユーザーがログインしていない場合だけログインボタンを表示
if ( !is_user_logged_in() ) {
gianism_login();
}
新しい問題が発生しています。Gianism1.0で以前から会員登録を受付ておりますが、今回Gianism3.0.3にバージョンアップ(同時に、wordpressを3.8.3→4.7.3に、同様にphpを5.3CGIから5.6モジュールにアップデート)したところ冒頭の問題が発生したのですが、新しい問題は–、
Gianism1.0ですでに会員登録をしている人が(ブラウザーのクッキーを消去した場合?)、Gianism3.0.3経由でログインした場合、別の会員として登録されてしまいます。DBのusersテーブルで調べてみますと、[“user_login”]=>string(x) “abcd”が、[“user_login”]=>string(y)”abcd@pseudo.twitter.com”と別の会員になっていました。
これに対処するのは、どうすれば良いのでしょうか? 引き続きご指導をお願いいたします。
March 31, 2017 at 2:23 pm #267FumikiKeymasterGianismは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_から変更している場合は、上記の文も変更してください。
March 31, 2017 at 3:17 pm #268fb-1848993692019106Participantお世話になります。同一twitterアカウントの会員登録状況は以下です。
Gianism3.0.3で登録(初回ログイン時会員登録)
user_id 5103
_wpg_twitter_id 153481xxxx (usermeta)
nickname @abcd (usermeta)
user_login abcd@pseudo.twitter.comusers (users)
user_nicename abcd@pseudo.twitter.com (users)Gianism1.0で登録(初回ログイン時会員登録)
user_id 1386
_wpg_twitter_id カラム、値 両方ともなし(usermeta,usersとも)
nickname @tutor_A2 (usermeta)
user_login @tutor_A2 (users)
user_nicename tutor_A2 (users)Gianism1.0ログインの場合、_wpg_twitter_id はカラム自体がありません。更にuser_login user_nicenameの値の選定基準が違っていました。
ご指導のほど、どうぞよろしくお願いいたします。
March 31, 2017 at 3:22 pm #269fb-1848993692019106Participantゴメンナサイ、一部素のまま投稿してしまいました。こちらをご高覧いただければ幸いです。
同一twitterアカウントの会員登録状況は以下です。
Gianism3.0.3で登録(初回ログイン時会員登録)
user_id 5103
_wpg_twitter_id 153481xxxx (usermeta)
nickname @abcd (usermeta)
user_login abcd@pseudo.twitter.comusers (users)
user_nicename abcd@pseudo.twitter.com (users)Gianism1.0で登録(初回ログイン時会員登録)
user_id 1386
_wpg_twitter_id カラム、値 両方ともなし(usermeta,usersとも)
nickname @abcd (usermeta)
user_login @abcd (users)
user_nicename abcd (users)Gianism1.0ログインの場合、_wpg_twitter_id はカラム自体がありません。更にuser_login user_nicenameの値の選定基準が違っていました。
ご指導のほど、どうぞよろしくお願いいたします。
March 31, 2017 at 3:28 pm #270FumikiKeymasterGianism 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
March 31, 2017 at 4:18 pm #271fb-1848993692019106Participant面倒な件に丁寧に対応していただき、感謝しています。
ご相談のサイトは、会員に種類を設けているため、twitter認証?の後に遷移するページをGianismのfunctions.phpに以下のように指定しています。
function _my_redirect_to($url){
//これでリダイレクトURLが取得できます
//指定されていなければ$urlはNULLです。
//return home_url();
return ‘http://mydomain/bunki’;}
// Add filter.
add_filter(‘gianism_redirect_to’, ‘_my_redirect_to’);そして、http://mydomain/bunki で、
1)ログインユーザーの情報を $userinfo = wp_get_current_user( ); で入手して
2)「newcommer」であれば、条件(遷移元)によって会員種を決定し
3)user_metaテーブルに会員種を追加しする$kaiintype = array(‘t_via_web’=>TRUE);
$update_xyz_capabilities = update_user_meta( $userinfo->ID , ‘wp5_capabilities’ , $kaiintype );4)最後に会員種によって、遷移先を振り分けています
今回、一番最初のログインユーザーの情報取得($userinfo = wp_get_current_user( );)の段階で、同じtwitterアカウントの方が、二重に情報を持ってしまう(以下)ので困っている次第です。
Gianism3.0.3で登録(初回ログイン時会員登録)
user_id 5103
_wpg_twitter_id 153481xxxx (usermeta)
nickname @abcd (usermeta)
user_login abcd@pseudo.twitter.comusers (users)
user_nicename abcd@pseudo.twitter.com (users)Gianism1.0で登録(初回ログイン時会員登録)
user_id 1386
_wpg_twitter_id カラム、値 両方ともなし(usermeta,usersとも)
nickname @abcd (usermeta)
user_login @abcd (users)
user_nicename abcd (users)また、「twitterアカウントの接続を解除」のご指摘ですが、現在会員登録されている1000以上の方が、すべて
_wpg_twitter_idを持っていないため、そのような原因は考えられないと思います。最後になりましたが、1386のユーザーのユーザーメタは以下です。
上から
umeta_id
user_id
meta_key
meta_value(空白の場合はなし)25355
1386
jabber29429
1386
mother_tongue
Bingo20077
1386
admin_color
fresh20076
1386
comment_shortcuts
false20075
1386
rich_editing
true20074
1386
description20073
1386
nickname
@abcd20072
1386
last_name20071
1386
first_name20085
1386
tweet_by_kidoh
receive20082
1386
signup_ip
124.yyy.115.xxx20081
1386
wp5_user_level
020080
1386
wp5_capabilities
a:1:{s:9:”t_via_web”;b:1;}20079
1386
show_admin_bar_front
true20078
1386
use_ssl
020783
1386
namae
Nobu20784
1386
nationality
Indonesian25354
1386
yim25353
1386
aim25358
1386
appear_in_or_skype
appear_abcdどうぞよろしくお願いいたします。
March 31, 2017 at 4:37 pm #272FumikiKeymasterなるほど。1000人もいるのであれば、ログインできないと困りますね。
しかしながら、_wpg_twitter_id
がないとそもそもtwitterによるログイン自体ができないはずです。
また、リダイレクト先を変更するgianism_redirect_to
フィルターの時点ですでにユーザーの作成は完了しているので、分岐についてはあまり関係ありません。途中で私がコードを変更していた場合はこの限りではないのですが……
取り急ぎ1386の方のことは忘れていただき、以下のクエリを発行して確認していただけますでしょうか。
SELECT * from wp_usermeta WHERE meta_key LIKE '%twitter%'
これでtwitter IDっぽいやつが存在していないかどうか、確認していただけますでしょうか。おそらく、データが大量に取れてしまうとは思いますが。
その他、以下の可能性もあわせて検証してください。
- そもそもtwitterでログインできていたか。以前Gianism以外のプラグインでログインできていたのではないか。
- 現在データを調査しているサーバは本番で稼働しているか。
March 31, 2017 at 5:28 pm #273fb-1848993692019106Participantお世話になります。
ご指示の通り、確認してみました。
SELECT * from wp_usermeta
WHERE meta_key LIKE ‘%twitter%’該当なしでした。因みに、user_id = 5103 ですと、
_wpg_twitter_id 153481xxxx
がありました。ただ上記の検索結果で気づいたのですが、他のカラムのmeta_keyがwp5_capabilitiesなどと「wp5_」と頭につく文字のものがいくつかあったのですが、twitterのidを表すカラムのmeta_keyは「_wpg_」が頭について、_wpg_twitter_id となっていました。他に2箇所(_wpg_twitter_screen_name,
_wpg_unknown_password)。これは変ではありませんか???以下、ご指摘につきましては下記の通りです。
Q)そもそもtwitterでログインできていたか。
A)できていました。Q)以前Gianism以外のプラグインでログインできていたのではないか。
A)Gianism1.0 で会員登録システムを作り、facebookにも対応させるため、Gianism2.2.7に変更し(この時点でphpを5.3→5.6)たのですが、パーマリンクの変更をしたくなかったので、Gianism3.0.3に再度変更(この時点でwordpressを3.8.3→4.7.3)。パーマリンクの変更は必須だと知ってついに変更いたしました。
会員登録システムはGianism以外は使ったことはございません。Q)現在データを調査しているサーバは本番で稼働しているか。
A)本番で稼働しています。以上です。どうぞよろしくお願いいたします。
March 31, 2017 at 5:38 pm #274FumikiKeymasterあ、すみません。もしかすると、テーブル接頭辞は 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 という値を挿入してもおかしくならないようにしています。
March 31, 2017 at 6:03 pm #275fb-1848993692019106Participantお手数をおかけいたしております。
ご指示の検証ですが、該当はやはりゼロでした。
SELECT * from wp5_usermeta
WHERE meta_key LIKE ‘%twitter%’結局、私のほうのプログラムを変更することにいたしました。
昨日から、ご相談に乗っていただいてたいへんありがとうございました。
March 31, 2017 at 6:11 pm #276FumikiKeymaster結局、私のほうのプログラムを変更することにいたしました。
どのようなプログラムなのかはわからないのですが、そこ変更しても根本的には解決しないと思われます。
というのは、
_wpg_twitter_id
を持たないユーザーはtwitterでログインしていないからです。そのデータが見つからないということは……– テーブル接頭辞が違う
– そもそも見ているデータベースが違う
– いままで一人もtwitterでログインしていなかったなどの可能性が考えられます。ちなみに、同様のデータで私が管理しているサイトのDBを探して見たところ、2,000レコード以上が見つかりました。ちなみに、私自身バージョン1からずっと使っていますので、「バージョンを上げたら以前ログインできていた人がログインできなくなった」という事象には遭遇していません。一時期mixiログインにそういった不具合はありましたが……
-
AuthorPosts
- You must be logged in to reply to this topic.