Project

General

Profile

Enhancement(機能追加・改善) #3788

Google OAuth 2.0 へ移行する

Added by Shinichi Urabe over 7 years ago. Updated about 7 years ago.

Status:
Fixed(完了)
Priority:
Normal(通常)
Target version:
Start date:
2015-03-16
Due date:
2015-04-17
% Done:

100%


Description

概要

Google の OAuth 1.0 のサポートが2015年4月に終了するため、OAuth 2.0 へ移行する機構を導入する

Changes to deprecation policies and API spring cleaning

導入予定のライブラリ

https://github.com/google/google-api-php-client

カレンダー.html View (338 KB) isao sano, 2015-04-16 19:39


Subtasks

Enhancement(機能追加・改善) #3795: #3788 の修正のうちタスクの修正を行うFixed(完了)Shinichi Urabe

History

#1 Updated by Shinichi Urabe over 7 years ago

  • Description updated (diff)

#2 Updated by Shinichi Urabe about 7 years ago

  • Status changed from New(新規) to Pending Review(レビュー待ち)
  • Assignee set to Shinichi Urabe
  • Target version set to 0.9.5
  • % Done changed from 0 to 50

#3 Updated by isao sano about 7 years ago

migration時にエラーが発生します。

migrating of opCalendarPlugin encountered the following errors:
  Error #1 - SQLSTATE[42S02]: Base table or view not found: 1146 Table 'sns_example_com.holiday' doesn't exist. Failing Query: "DROP INDEX month_day_INDEX_idx ON `holiday`" 
  Error #2 - SQLSTATE[42S02]: Base table or view not found: 1146 Table 'sns_example_com.holiday' doesn't exist. Failing Query: "ALTER TABLE `holiday` ADD `year` INT" 
  Error #3 - SQLSTATE[42S02]: Base table or view not found: 1146 Table 'sns_example_com.holiday' doesn't exist. Failing Query: "CREATE INDEX year_month_day_INDEX_idx ON `holiday` (`year`, `month`, `day`)" 
  Error #4 - SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint. Failing Query: "ALTER TABLE `schedule_member` ADD CONSTRAINT schedule_member_schedule_id_schedule_id FOREIGN KEY (schedule_id) REFERENCES `schedule`(id) ON DELETE CASCADE" 
  Error #5 - SQLSTATE[42S02]: Base table or view not found: 1146 Table 'sns_example_com.schedule' doesn't exist. Failing Query: "SELECT id, member_id FROM schedule" 
  Error #6 - SQLSTATE[42S02]: Base table or view not found: 1146 Table 'sns_example_com.schedule' doesn't exist. Failing Query: "ALTER TABLE `schedule` ADD public_flag TINYINT DEFAULT 1 NOT NULL" 
  Error #7 - SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint. Failing Query: "CREATE TABLE `schedule_resource_lock` ( `id` int(11) NOT NULL AUTO_INCREMENT, `schedule_resource_id` int(11) NOT NULL, `schedule_id` int(11) NOT NULL, `lock_start_time` datetime NOT NULL, `lock_end_time` datetime NOT NULL, PRIMARY KEY (`id`), KEY `schedule_resource_id_idx` (`schedule_resource_id`), KEY `schedule_id_idx` (`schedule_id`), KEY `lock_start_time_lock_end_time_idx` (`lock_start_time`,`lock_end_time`), CONSTRAINT `schedule_resource_lock_schedule_id_schedule_id` FOREIGN KEY (`schedule_id`) REFERENCES `schedule` (`id`) ON DELETE CASCADE, CONSTRAINT `schedule_resource_lock_schedule_resource_id_schedule_resource_id` FOREIGN KEY (`schedule_resource_id`) REFERENCES `schedule_resource` (`id`) ON DELETE CASCADE) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8" 
  Error #8 - SQLSTATE[42S02]: Base table or view not found: 1146 Table 'sns_example_com.schedule' doesn't exist. Failing Query: "ALTER TABLE `schedule` ADD `api_flag` TINYINT" 
  Error #9 - SQLSTATE[42S02]: Base table or view not found: 1146 Table 'sns_example_com.schedule' doesn't exist. Failing Query: "ALTER TABLE `schedule` ADD api_id_unique VARCHAR(32)" 
  Error #10 - SQLSTATE[42S02]: Base table or view not found: 1146 Table 'sns_example_com.schedule' doesn't exist. Failing Query: "ALTER TABLE `schedule` ADD `api_etag` VARCHAR(32)" 
  Error #11 - SQLSTATE[42S02]: Base table or view not found: 1146 Table 'sns_example_com.schedule' doesn't exist. Failing Query: "CREATE INDEX api_flag_api_id_unique_INDEX_idx ON `schedule` (`api_flag`, api_id_unique)" 
  Error #12 - SQLSTATE[42S02]: Base table or view not found: 1146 Table 'sns_example_com.schedule' doesn't exist. Failing Query: "ALTER TABLE `schedule` CHANGE api_id_unique api_id_unique VARCHAR(64)" 

#4 Updated by Shinichi Urabe about 7 years ago

isao sano は書きました:

migration時にエラーが発生します。
[...]

OpenPNEのインストールの流れから、導入した手順を書いてもらえますか?

#5 Updated by isao sano about 7 years ago

「 Google カレンダーの認可設定を有効にする」をクリックすると「アクセスできません。」の画面が表示されます。何か手順が足りていないのでしょうか?手順は以下です。

1. OAuth から「新しいクライアントIDを作成」で
・JavasSript 生成元「http://36x.sano.dazai2.pne.jp」
・リダイレクト URI「http://36x.sano.dazai2.pne.jp/calendarApi/callback」
に設定
2. 「JSONをダウンロード」ボタンを押下
3. 管理画面のカレンダープラグイン設定で手順2でダウンロードしたJSONファイルを選択
4. Google Data API を使用しますか?「はい」
5. ユーザー画面からカレンダーを選択
6. 「 Google カレンダーの認可設定を有効にする」をクリック

devモードでのエラーを添付します。

#6 Updated by isao sano about 7 years ago

nameに「google」が入ったれコードはありませんでした。

mysql> select * from member_config; 
+----+-----------+-----------------+----------------------------------+---------------------+----------------------------------+---------------------+---------------------+
| id | member_id | name            | value                            | value_datetime      | name_value_hash                  | created_at          | updated_at          |
+----+-----------+-----------------+----------------------------------+---------------------+----------------------------------+---------------------+---------------------+
|  1 |         1 | pc_address      | sns@example.com                  | NULL                | 885654aa381dfadbc6ea2c47a4a30f6a | 2015-04-16 20:07:45 | 2015-04-16 20:07:45 | 
|  2 |         1 | password        | 5f4dcc3b5aa765d61d8327deb882cf99 | NULL                | 927246e0e2492bb1c4334e89edfa252f | 2015-04-16 20:07:45 | 2015-04-16 20:07:45 | 
|  3 |         1 | secret_question | 5                                | NULL                | 0ca0709b3ef4d5c7bde5e0f67c2021e1 | 2015-04-16 20:07:45 | 2015-04-16 20:07:45 | 
|  4 |         1 | secret_answer   | c81c00cad27aa757b313626c3c02094f | NULL                | 8e460ad7facdeae96bfb1871f5d7a5b3 | 2015-04-16 20:07:45 | 2015-04-16 20:07:45 | 
|  5 |         1 | lastLogin       |                                  | 2015-04-16 20:09:05 | 83f893f513b36f24c7bbdf4839c518b0 | 2015-04-16 20:08:52 | 2015-04-16 20:09:05 | 
+----+-----------+-----------------+----------------------------------+---------------------+----------------------------------+---------------------+---------------------+
5 rows in set (0.00 sec)

#7 Updated by kaoru n about 7 years ago

https://github.com/ShinichiU/opCalendarPlugin/blob/master/apps/pc_frontend/modules/calendarApi/actions/actions.class.php#L25
をコメントにするとアカウント選択画面が表示されます。
おそらく、最初のアクセス時は、ACCESS_TOKEN_KEY が存在しないため、認証処理で引っかかってしまうのかと思いますがどうでしょうか。

#8 Updated by Shinichi Urabe about 7 years ago

isao sano は書きました:

nameに「google」が入ったれコードはありませんでした。

[...]

#note-6 #note-7 の件について修正をpush しました https://github.com/ShinichiU/opCalendarPlugin/commit/5c4e710e58a22e479d8e886f0a9b768fead1797f
sfAction::forward404If() という分岐のメソッドを使ってなかったので常に404でした

#9 Updated by Shinichi Urabe about 7 years ago

  • Subject changed from Google の OAuth 1.0 のサポートが2015年4月に終了するため、OAuth 2.0 へ移行する機構を導入する to Google OAuth 2.0 へ移行する
  • Description updated (diff)

#10 Updated by kaoru n about 7 years ago

#note-3 migration時のエラー発生までの手順

既存の OpenPNE-3.8.x へ opCalendarPluginを導入しました。

$ cd plugins/
$ git clone https://github.com/ShinichiU/opCalendarPlugin.git
$ cd ../
$ ./symfony doctrine:build-model
$ ./symfony cc
$ ./symfony openpne:migrate

このときに #note-3 のエラーが発生します。

#11 Updated by isao sano about 7 years ago

dazai2環境でも #note-3 と同じ手順でエラー発生しました。

#12 Updated by isao sano about 7 years ago

質問です。
/calendarApi/import 画面までは遷移できました。そこで自分のgmailを選択したのですが、googleカレンダーに入っている予定がSNSのカレンダーで表示されません。
なにか必要な手順がありますでしょうか? #note-5 の手順のあと実施。

ちなみに

$./symfony opCalendar:update-google-api

というタスクがあったので、実行してみたところ

[sano@www1124uc 36x.sano.dazai2.pne.jp]$ ./symfony opCalendar:update-google-api
>> prepared  start update
>> prepare   update member_id: 1, id: sns@example.com
>> result    success

と表示されました。
現在のmember_config テーブルは以下です。

+----+-----------+------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+----------------------------------+---------------------+---------------------+
| id | member_id | name                               | value                                                                                                                                                                                                                                                     | value_datetime      | name_value_hash                  | created_at          | updated_at          |
+----+-----------+------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+----------------------------------+---------------------+---------------------+
|  1 |         1 | pc_address                         | sns@example.com                                                                                                                                                                                                                                           | NULL                | 885654aa381dfadbc6ea2c47a4a30f6a | 2015-04-16 20:07:45 | 2015-04-16 20:07:45 | 
|  2 |         1 | password                           | 5f4dcc3b5aa765d61d8327deb882cf99                                                                                                                                                                                                                          | NULL                | 927246e0e2492bb1c4334e89edfa252f | 2015-04-16 20:07:45 | 2015-04-16 20:07:45 | 
|  3 |         1 | secret_question                    | 5                                                                                                                                                                                                                                                         | NULL                | 0ca0709b3ef4d5c7bde5e0f67c2021e1 | 2015-04-16 20:07:45 | 2015-04-16 20:07:45 | 
|  4 |         1 | secret_answer                      | c81c00cad27aa757b313626c3c02094f                                                                                                                                                                                                                          | NULL                | 8e460ad7facdeae96bfb1871f5d7a5b3 | 2015-04-16 20:07:45 | 2015-04-16 20:07:45 | 
|  5 |         1 | lastLogin                          |                                                                                                                                                                                                                                                           | 2015-04-17 13:19:36 | 83f893f513b36f24c7bbdf4839c518b0 | 2015-04-16 20:08:52 | 2015-04-17 13:19:36 | 
|  6 |         1 | google_calendar_oauth_access_token | {"access_token":"ya29.WAEJ6GgswXQXzHywbLRDRKPJDPuAcHvXa6d7rQYtabZNm17d4sSSeMHPm9ygDgoRrJ14B0vSN9k-UQ","token_type":"Bearer","expires_in":3600,"refresh_token":"1\/CuFKzSasvbOJwHHZYFjbP1eH9VxhT0qETrnBNAfnXSAMEudVrK5jSpoR30zcRFq6","created":1429241587} | NULL                | 3e31722ad1912f37f60bb6515dbe5677 | 2015-04-17 12:33:07 | 2015-04-17 12:33:07 | 
|  7 |         1 | google_cron_update                 | 1                                                                                                                                                                                                                                                         | NULL                | 83e744fa6867c7b4d683a1ed12347f8a | 2015-04-17 12:33:30 | 2015-04-17 13:19:06 | 
|  8 |         1 | opCalendarPlugin_email             |                                                                                                                                                                                                                                                           | NULL                | e6252a57881b65f5bfded9831ab18c4d | 2015-04-17 12:33:31 | 2015-04-17 12:33:31 | 
|  9 |         1 | google_cron_update_params          | a:2:{s:3:"src";a:1:{i:0;s:17:"sns@example.com";}s:11:"public_flag";s:1:"1";}                                                                                                                                                                            | NULL                | 59709d58c8ba1b5d241946ad47add268 | 2015-04-17 12:44:07 | 2015-04-17 12:55:23 | 
+----+-----------+------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+----------------------------------+---------------------+---------------------+
9 rows in set (0.00 sec)

#13 Updated by Shinichi Urabe about 7 years ago

kaoru nishizoe は書きました:

#note-3 migration時のエラー発生までの手順

既存の OpenPNE-3.8.x へ opCalendarPluginを導入しました。

[...]

このときに #note-3 のエラーが発生します。

この流れだとエラーがおきます。(カレンダー以外のプラグインでもプラグインに定義されているテーブルと同じテーブルがない場合、同じエラーになります)
http://www.bucyou.net/openpne3/openpne3-3-x_dev/op3_3_dev6 を参考にしてください opPlugin:sync のタスクを実行したときに _needs_data_load というサフィックスがついた値が SnsConfig に入ります。
OpenPNEの仕様ですので不具合ではないです。

あと、一つのチケットでやりとりするのではなくて、新規チケット作ってもらっていいですか

#14 Updated by Shinichi Urabe about 7 years ago

isao sano は書きました:

質問です。
/calendarApi/import 画面までは遷移できました。そこで自分のgmailを選択したのですが、googleカレンダーに入っている予定がSNSのカレンダーで表示されません。
なにか必要な手順がありますでしょうか? #note-5 の手順のあと実施。

ちなみに

$./symfony opCalendar:update-google-api

というタスクがあったので、実行してみたところ
[...]

と表示されました。
現在のmember_config テーブルは以下です。

[...]

バグチケット作成してもらってよいですか。作成したカレンダーの内容、期間とかカレンダーに参加しているメンバーなどをお知らせください

#15 Updated by Shinichi Urabe about 7 years ago

バグチケット作成してもらってよいですか。作成したカレンダーの内容、期間とかカレンダーに参加しているメンバーなどをお知らせください

こちらは修正しました. 日付のフォーマットが取得できる想定と間違っていたので、期間が間違ってDBに登録されていると思います。正しいフォーマットで保存しました。試験環境のデータをクリーンにする場合はバックアップの上、 DELETE FROM schedule WHERE api_etag IS NOT NULL; で連係データを一旦消せます
https://github.com/ShinichiU/opCalendarPlugin/commit/828932e62fcc59dc3edd8e3f4313edcef2eaa410

#16 Updated by isao sano about 7 years ago

  • Status changed from Pending Review(レビュー待ち) to Fixed(完了)
  • % Done changed from 50 to 100

3.6.18 及び 3.8.15 にて試験を行いました。
問題ありません。

Also available in: Atom PDF