Support Forum 「twitterログイン」できない

translate このフォーラムは日本語でも利用できます。ログインして、言語設定を変更してください。

This topic contains 14 replies, has 2 voices, and was last updated by  Fumiki 2 years, 9 months ago.

Viewing 15 posts - 1 through 15 (of 15 total)
  • Author
    Posts
  • #261

    fb-1848993692019106
    Participant

    初めまして。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の環境です。

    対処方法をご指導いただけますか?

    #262

    Fumiki
    Keymaster

    おそらくなのですが、セッション機能が有効でないような気がします。キャッシュプラグインなどはなにか利用されていますでしょうか。ロリポップではセッションが利用可能なので、その問題ではないような気がします。

    また、twitterのアプリケーション登録を済ませているかも同時にご確認ください。

    #263

    fb-1848993692019106
    Participant

    未明にもかかわらず早速のご返信、ありがとうございます。ご指摘の2点について確認してみましたが、対処すべき点はありませんでした。しかし、「キャッシュ」というご指摘からもしやと思い、ブラウザの「閲覧履歴」を削除いたしましたところ、「twitterの認証ページ」が現れ、目的のページにたどり着くことができました。
    しかし、何回かテストをしてみますと、毎回ブラウザの「閲覧履歴」を削除しないと正常な遷移をせず、ブラウザの「閲覧履歴」を削除しないと冒頭ご相談申し上げた症状が出ている次第です。
    引き続き、アドバイスを賜ればありがたいです。どうぞよろしくお願いいたします。

    #264

    Fumiki
    Keymaster

    以下に該当するメッセージは出ないはずなのですが、似ている箇所としては「ログインしていますね?」というものがあります。

    そのページでは「していますね?
    « 戻る」という文字のみ表示されてしまいます

    これはすでにログインしているユーザーがtwitterでログインしようとした場合に表示されます。このケースには該当しますか?

    閲覧履歴を削除、つまりWordPressにログインしていない状態にすることで正常に動作するとのことで、もしやと思いました。

    ちなみに、このボタンは ‘gianism_login` などの関数によって自力で表示しているものでしょうか? だとすれば、その部分はログインユーザーに対して表示すべきではなく、ログインしていないユーザーにだけ表示すべきです。

    // ユーザーがログインしていない場合だけログインボタンを表示
    if ( ! is_user_logged_in() ) {
       gianism_login();
    }
    

    Cookieを削除したら動くということは、サーバーのエラーではないと思われますので、上記ご確認ください。

    • This reply was modified 2 years, 9 months ago by  Fumiki. Reason: 条件式が間違っていた
    #266

    fb-1848993692019106
    Participant

    ご連絡ありがとうございます。下記を使用したところ、無事解決いたしました。御礼申し上げます。が、
    // ユーザーがログインしていない場合だけログインボタンを表示
    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)”[email protected]”と別の会員になっていました。

    これに対処するのは、どうすれば良いのでしょうか? 引き続きご指導をお願いいたします。

    #267

    Fumiki
    Keymaster

    Gianismは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_から変更している場合は、上記の文も変更してください。

    #268

    fb-1848993692019106
    Participant

    お世話になります。同一twitterアカウントの会員登録状況は以下です。

    Gianism3.0.3で登録(初回ログイン時会員登録)
    user_id 5103
    _wpg_twitter_id 153481xxxx (usermeta)
    nickname @abcd (usermeta)
    user_login [email protected] (users)
    user_nicename [email protected] (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の値の選定基準が違っていました。

    ご指導のほど、どうぞよろしくお願いいたします。

    #269

    fb-1848993692019106
    Participant

    ゴメンナサイ、一部素のまま投稿してしまいました。こちらをご高覧いただければ幸いです。

    同一twitterアカウントの会員登録状況は以下です。

    Gianism3.0.3で登録(初回ログイン時会員登録)
    user_id      5103
    _wpg_twitter_id 153481xxxx (usermeta)
    nickname     @abcd (usermeta)
    user_login [email protected] (users)
    user_nicename [email protected] (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の値の選定基準が違っていました。

    ご指導のほど、どうぞよろしくお願いいたします。

    #270

    Fumiki
    Keymaster

    Gianism 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
    
    #271

    fb-1848993692019106
    Participant

    面倒な件に丁寧に対応していただき、感謝しています。

    ご相談のサイトは、会員に種類を設けているため、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 [email protected] (users)
    user_nicename [email protected] (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
    jabber

    29429
    1386
    mother_tongue
    Bingo

    20077
    1386
    admin_color
    fresh

    20076
    1386
    comment_shortcuts
    false

    20075
    1386
    rich_editing
    true

    20074
    1386
    description

    20073
    1386
    nickname
    @abcd

    20072
    1386
    last_name

    20071
    1386
    first_name

    20085
    1386
    tweet_by_kidoh
    receive

    20082
    1386
    signup_ip
    124.yyy.115.xxx

    20081
    1386
    wp5_user_level
    0

    20080
    1386
    wp5_capabilities
    a:1:{s:9:”t_via_web”;b:1;}

    20079
    1386
    show_admin_bar_front
    true

    20078
    1386
    use_ssl
    0

    20783
    1386
    namae
    Nobu

    20784
    1386
    nationality
    Indonesian

    25354
    1386
    yim

    25353
    1386
    aim

    25358
    1386
    appear_in_or_skype
    appear_abcd

    どうぞよろしくお願いいたします。

    #272

    Fumiki
    Keymaster

    なるほど。1000人もいるのであれば、ログインできないと困りますね。
    しかしながら、 _wpg_twitter_id がないとそもそもtwitterによるログイン自体ができないはずです。
    また、リダイレクト先を変更する gianism_redirect_to フィルターの時点ですでにユーザーの作成は完了しているので、分岐についてはあまり関係ありません。

    途中で私がコードを変更していた場合はこの限りではないのですが……

    取り急ぎ1386の方のことは忘れていただき、以下のクエリを発行して確認していただけますでしょうか。

    SELECT * from wp_usermeta
    WHERE meta_key LIKE '%twitter%'
    

    これでtwitter IDっぽいやつが存在していないかどうか、確認していただけますでしょうか。おそらく、データが大量に取れてしまうとは思いますが。

    その他、以下の可能性もあわせて検証してください。

    • そもそもtwitterでログインできていたか。以前Gianism以外のプラグインでログインできていたのではないか。
    • 現在データを調査しているサーバは本番で稼働しているか。
    #273

    fb-1848993692019106
    Participant

    お世話になります。

    ご指示の通り、確認してみました。

    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)本番で稼働しています。

    以上です。どうぞよろしくお願いいたします。

    #274

    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 という値を挿入してもおかしくならないようにしています。

    #275

    fb-1848993692019106
    Participant

    お手数をおかけいたしております。

    ご指示の検証ですが、該当はやはりゼロでした。

    SELECT * from wp5_usermeta
    WHERE meta_key LIKE ‘%twitter%’

    結局、私のほうのプログラムを変更することにいたしました。

    昨日から、ご相談に乗っていただいてたいへんありがとうございました。

    #276

    Fumiki
    Keymaster

    結局、私のほうのプログラムを変更することにいたしました。

    どのようなプログラムなのかはわからないのですが、そこ変更しても根本的には解決しないと思われます。

    というのは、 _wpg_twitter_idを持たないユーザーはtwitterでログインしていないからです。そのデータが見つからないということは……

    – テーブル接頭辞が違う
    – そもそも見ているデータベースが違う
    – いままで一人もtwitterでログインしていなかった

    などの可能性が考えられます。ちなみに、同様のデータで私が管理しているサイトのDBを探して見たところ、2,000レコード以上が見つかりました。ちなみに、私自身バージョン1からずっと使っていますので、「バージョンを上げたら以前ログインできていた人がログインできなくなった」という事象には遭遇していません。一時期mixiログインにそういった不具合はありましたが……

Viewing 15 posts - 1 through 15 (of 15 total)

You must be logged in to reply to this topic.

SPONSORED LINK
SPONSORED LINK