Enhancement(機能追加・改善) #3788
完了Google OAuth 2.0 へ移行する
100%
説明
概要¶
Google の OAuth 1.0 のサポートが2015年4月に終了するため、OAuth 2.0 へ移行する機構を導入する
Changes to deprecation policies and API spring cleaning
導入予定のライブラリ
ファイル
Shinichi Urabe さんが9年以上前に更新
- ステータス を New(新規) から Pending Review(レビュー待ち) に変更
- 担当者 を Shinichi Urabe にセット
- 対象バージョン を 0.9.5 にセット
- 進捗率 を 0 から 50 に変更
isao sano さんが9年以上前に更新
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)"
Shinichi Urabe さんが9年以上前に更新
isao sano は書きました:
migration時にエラーが発生します。
[...]
OpenPNEのインストールの流れから、導入した手順を書いてもらえますか?
isao sano さんが9年以上前に更新
- ファイル カレンダー.html カレンダー.html を追加
「 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モードでのエラーを添付します。
isao sano さんが9年以上前に更新
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)
kaoru n さんが9年以上前に更新
https://github.com/ShinichiU/opCalendarPlugin/blob/master/apps/pc_frontend/modules/calendarApi/actions/actions.class.php#L25
をコメントにするとアカウント選択画面が表示されます。
おそらく、最初のアクセス時は、ACCESS_TOKEN_KEY が存在しないため、認証処理で引っかかってしまうのかと思いますがどうでしょうか。
Shinichi Urabe さんが9年以上前に更新
isao sano は書きました:
nameに「google」が入ったれコードはありませんでした。
[...]
#note-6 #note-7 の件について修正をpush しました https://github.com/ShinichiU/opCalendarPlugin/commit/5c4e710e58a22e479d8e886f0a9b768fead1797fsfAction::forward404If()
という分岐のメソッドを使ってなかったので常に404でした
Shinichi Urabe さんが9年以上前に更新
- 題名 を Google の OAuth 1.0 のサポートが2015年4月に終了するため、OAuth 2.0 へ移行する機構を導入する から Google OAuth 2.0 へ移行する に変更
- 説明 を更新 (差分)
isao sano さんが9年以上前に更新
質問です。
/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)
Shinichi Urabe さんが9年以上前に更新
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の仕様ですので不具合ではないです。
あと、一つのチケットでやりとりするのではなくて、新規チケット作ってもらっていいですか
Shinichi Urabe さんが9年以上前に更新
isao sano は書きました:
質問です。
/calendarApi/import 画面までは遷移できました。そこで自分のgmailを選択したのですが、googleカレンダーに入っている予定がSNSのカレンダーで表示されません。
なにか必要な手順がありますでしょうか? #note-5 の手順のあと実施。ちなみに
$./symfony opCalendar:update-google-api
というタスクがあったので、実行してみたところ
[...]と表示されました。
現在のmember_config テーブルは以下です。[...]
バグチケット作成してもらってよいですか。作成したカレンダーの内容、期間とかカレンダーに参加しているメンバーなどをお知らせください
Shinichi Urabe さんが9年以上前に更新
バグチケット作成してもらってよいですか。作成したカレンダーの内容、期間とかカレンダーに参加しているメンバーなどをお知らせください
こちらは修正しました. 日付のフォーマットが取得できる想定と間違っていたので、期間が間違ってDBに登録されていると思います。正しいフォーマットで保存しました。試験環境のデータをクリーンにする場合はバックアップの上、 DELETE FROM schedule WHERE api_etag IS NOT NULL;
で連係データを一旦消せます
https://github.com/ShinichiU/opCalendarPlugin/commit/828932e62fcc59dc3edd8e3f4313edcef2eaa410