プロジェクト

全般

プロフィール

Backport(バックポート) #2525

完了

OpenPNE2系からコンバートした環境でかんたんログインできない携帯機種がある

Kousuke Ebihara さんが約13年前に追加. 約13年前に更新.

ステータス:
Fixed(完了)
優先度:
High(高め)
担当者:
対象バージョン:
開始日:
2011-05-12
期日:
進捗率:

100%

予定工数:

説明

Overview (現象)

OpenPNE2の時にかんたんログインを設定しておき、そのSNSをOpenPNE3系(3.4 or 3.6)にコンバートした場合、設定した携帯機種でかんたんログインできない。
au(misora)はかんたんログインできるが、softbankとdocomoの携帯でかんたんログインできない。
本来はかんたんログインできるのが正しい仕様である。

もちろん、コンバート後かんたんログインを再設定すれば再びかんたんログインできるようになる。

再現バージョン

  • OpenPNE3.6beta10-dev
  • OpenPNE3.4.12-dev

再現した携帯機種

  • Docomo SH-05A,P901is
  • softbank 840P

再現手順

  1. OpenPNE2.14で携帯(au、docomo、softbank)を登録する
  2. かんたんログインできるようにしておく(個体識別番号を登録しておく)
  3. 手順1で登録したSNSをOpenPNE3.6(または3.4)にコンバートする
  4. 手順1で登録した携帯でかんたんログインを試みる
  5. auはかんたんログインできる
  6. docomoとsoftbankはかんたんログイン出来ずにログイン失敗しましたのページに遷移する

Causes (原因)

OpenPNE 2 では端末付与型の携帯電話個体識別番号を優先して取得しているにも関わらず、 OpenPNE 3 ではゲートウェイ付与型の携帯電話個体識別番号を優先して取得し、かんたんログインに使用しているため。

Way to fix (修正内容)

ゲートウェイ付与型の携帯電話個体識別番号のみ取得や、端末付与型の携帯電話個体識別番号のみの取得がおこなえるようにし、かんたんログインなどそれらの区別が必要な場面において柔軟に対応できるようにした。

この変更を利用したかんたんログイン自体の実装の修正については、 opAuthMobileUIDPlugin 側で実施した。 http://redmine.openpne.jp/issues/2220


関連するチケット 2 (0件未完了2件完了)

関連している OpenPNE 3 - Bug(バグ) #2087: OpenPNE2系からコンバートした環境でかんたんログインできない携帯機種があるFixed(完了)Kousuke Ebihara2011-05-12

操作
関連している OpenPNE 3 - Task(タスク) #2527: opAuthMobileUIDPlugin 1.0.1 のリリースとバンドルをおこなうFixed(完了)Yuya Watanabe2011-10-19

操作

Yuya Watanabe さんが約13年前に更新

  • ステータスNew(新規) から Accepted(着手) に変更
  • 担当者Yuya Watanabe にセット

Yuya Watanabe さんが約13年前に更新

#1113 の変更によってコンフリクトが発生する部分について

9f3f558e9c6075454cbcc095f110bf7eaf9c5e73 の変更によってgetMobileUID()に引数を付与することができるようになった.
また 89da5b0c6632cfac9c668df9da331aca3a037332 の変更によってgetMobileUID()を用いる部分で必要な箇所について適宜引数が与えれるように変更された.

3.4 では 89da5b0c6632cfac9c668df9da331aca3a037332 の対応部分においてコンフリクトが発生する.具体的には以下の部分である.
apps/mobile_frontend/modules/member/actions/actions.class.php
3.4

106         if ($request->hasParameter('update'))
107         {
108           if (!$request->getMobileUID())
109           {
110             $this->getUser()->setFlash('error', 'Your mobile UID was not registered.');
111             $this->redirect('member/configUID');
112           }
113 
114           $memberConfig = Doctrine::getTable('MemberConfig')->retrieveByNameAndMemberId('mobile_uid', $this->getUser()->getMemberId());
115           if (!$memberConfig)
116           {
117             $memberConfig = new MemberConfig();
118             $memberConfig->setMember($this->getUser()->getMember()); 
119             $memberConfig->setName('mobile_uid');
120           }
121           $memberConfig->setValue($request->getMobileUID());       
122           $memberConfig->save();
123           $this->getUser()->setFlash('notice', 'Your mobile UID was set successfully.');
124           $this->redirect('member/configUID');
125         }
126         elseif ($request->hasParameter('delete') && $this->isDeletableUid)
127         {
128           $mobileUid->delete();
129           $this->getUser()->setFlash('notice', 'Your mobile UID was deleted successfully.'); 
130           $this->redirect('member/configUID');
131         }

3.7

 82         if ($request->hasParameter('update'))
 83         {
 84           $cookieUid = sfContext::getInstance()->getResponse()->generateMobileUidCookie();
 85 
 86           if (!$request->getMobileUID(false) && !$cookieUid)
 87           {
 88             $this->getUser()->setFlash('error', 'Your mobile UID was not registered.');
 89             $this->redirect('member/configUID');
 90           }
 91 
 92           $member = $this->getUser()->getMember();
 93           $member->setConfig('mobile_uid', $request->getMobileUID(false));
 94           if ($cookieUid)
 95           {
 96             $member->setConfig('mobile_cookie_uid', $cookieUid);
 97           }
 98 
 99           $this->getUser()->setFlash('notice', 'Your mobile UID was set successfully.');
100           $this->redirect('member/configUID');
101         }
102         elseif ($request->hasParameter('delete') && $this->isDeletableUid)
103         {
104           $mobileUid->delete();
105           sfContext::getInstance()->getResponse()->deleteMobileUidCookie();
106           $this->getUser()->setFlash('notice', 'Your mobile UID was deleted successfully.');
107           $this->redirect('member/configUID');
108         }
109       }

#1113 は 3.4 では対応されていないため 3.4 の121行目と 3.7 の93行目について比較を行い, 3.4 の121行目のgetMobileUID()の引数にfalseが必要であるかどうかを検討したところ 内容的には 3.4 の内容とほぼ一致したことを確認したため必要であると判断した.

比較用コード断片

3.7 lib/model/doctrine/Member.class.php

 97   public function setConfig($configName, $value, $isDateTime = false)
 98   {
 99     Doctrine::getTable('MemberConfig')->setValue($this->getId(), $configName, $value, $isDateTime);
100   }

3.7 lib/model/doctrine/MemberConfigTable.class.php

 93   public function setValue($memberId, $name, $value, $isDateTime = false)
 94   {
 95     $config = $this->retrieveByNameAndMemberId($name, $memberId);
 96     if (!$config)
 97     {
 98       $config = new memberConfig();
 99       $config->setMemberId($memberId);
100       $config->setName($name);
101     }
102     if ($isDateTime)
103     {
104       $config->setValueDatetime($value);
105     }
106     $config->setValue($value);
107     $config->save();
108     $this->results[$memberId][$name] = $config;
109   }

Yuya Watanabe さんが約13年前に更新

メモ

#1810534dd33ce9f2fbb46f747c74fd7bce558be95ca6 が原因でコンフリクトするが, #2241 で示される通り 3.4 では対応する必要がない.

Kousuke Ebihara さんが約13年前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 41d367ac7ca6d95a1813a812e01d5dc628c388b9 で適用されました。

Yuma Sakata さんが約13年前に更新

  • ステータスPending Review(レビュー待ち) から Rejected(差し戻し) に変更

frontend、backend 共にログインできなくなり、devモードで確認したところ、以下エラーが表示されました。

Parse error: syntax error, unexpected ')' in /home/sakata/sns/34x.hoge.jp/lib/request/sfOpenPNEWebRequest.class.php on line 137

該当ファイルの137行目を確認したところ、以下エラーが表示されました。

$uid = $this->hashMobileUid($this->getMobile()->getUID()));

この問題が含まれていたコミットも記述します。

d567ad5c (watanabe        2011-10-26 16:36:59 +0900 137)     $uid = $this->hashMobileUid($this->getMobile()->getUID()));

) が1つ多いのが原因だと思われますので、修正お願いします。

wa ta さんが約13年前に更新

  • ステータスRejected(差し戻し) から Pending Review(レビュー待ち) に変更

更新履歴 2f709f43627e8637756405bd1c862802e59d3770 で適用されました。

Kousuke Ebihara さんが約13年前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

Yuma Sakata さんが約13年前に更新

  • ステータスPending Testing(テスト待ち) から Rejected(差し戻し) に変更
  • 進捗率70 から 50 に変更

2.12 → 3.4.17 アップグレードした場合、au(misora)はかんたんログインできるが、softbank(840P)とdocomo(N-01B)の携帯でかんたんログインできませんでした。
docomo と softbank でもかんたんログインできるように修正お願いします。

Kousuke Ebihara さんが約13年前に更新

  • ステータスRejected(差し戻し) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

Yuma Sakata は書きました:

2.12 → 3.4.17 アップグレードした場合、au(misora)はかんたんログインできるが、softbank(840P)とdocomo(N-01B)の携帯でかんたんログインできませんでした。
docomo と softbank でもかんたんログインできるように修正お願いします。

この指摘についてですが、おそらく #2526 への対応が必要です。コード上は問題ないと思われるためテスト待ちに戻しますが、実際のテストはプラグイン側の対応がおこなわれるまで待ってください。

Yuma Sakata さんが約13年前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

テストOKです。

他の形式にエクスポート: Atom PDF