質問編集履歴
6
編集。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,17 +1,5 @@
|
|
1
1
|
CognitoのユーザープールにSignUpしているユーザーに対して、Facebookなどのidp認証を紐づけることは可能でしょうか?
|
2
|
-
実現したいことは下記です。
|
3
|
-
- ユーザープールにユーザーAを電話番号でSignUpさせる(その後CONFIRMED状態になっているとします)
|
4
|
-
- ユーザーAはFacebook認証を行い、その後はFacebookへ投稿、Facebookを用いたログインが行える
|
5
|
-
|
6
|
-
Facebook認証的なボタンをマイページなどに設置し、クリックするとアカウントとFacebookが紐づくようなイメージです。
|
7
|
-
|
8
|
-
今の所はFacebookによるOAuth認証までは終えていて、その後帰ってきたトークンをどのようにCognitoへ登録すれば良いのかわからずです・・。
|
9
|
-
|
10
|
-
federatedSignIn関数を用いて認証を行おうとしましたが既に登録されているメールアドレス的なエラーになってしまいます...。根本的に考え方間違っていますかね...
|
11
|
-
|
12
|
-
何か方法はありますでしょうか。ご教授のほどお願い申し上げます。
|
13
|
-
|
14
|
-
**実現したいこと
|
2
|
+
**実現したいこと**
|
15
3
|
- ユーザープールへ電話番号認証でサインアップしておく
|
16
4
|
- OAuthでIDPへ認証処理
|
17
5
|
- ログイン済みのユーザーへIDPアカウントを紐付ける(投稿連携、シングルサインオンできるなど)
|
5
実現したいことのまとめを追記。
title
CHANGED
File without changes
|
body
CHANGED
@@ -11,6 +11,11 @@
|
|
11
11
|
|
12
12
|
何か方法はありますでしょうか。ご教授のほどお願い申し上げます。
|
13
13
|
|
14
|
+
**実現したいことのまとめ**
|
15
|
+
- ユーザープールへ電話番号認証でサインアップしておく
|
16
|
+
- OAuthでIDPへ認証処理
|
17
|
+
- ログイン済みのユーザーへIDPアカウントを紐付ける(投稿連携、シングルサインオンできるなど)
|
18
|
+
|
14
19
|
**FacebookへのOAuth処理**
|
15
20
|
```javascript
|
16
21
|
import {Auth} from 'aws-amplify'
|
4
エラー内容を追記。
title
CHANGED
File without changes
|
body
CHANGED
@@ -19,7 +19,7 @@
|
|
19
19
|
return new Promise(resolve => {
|
20
20
|
window.fbAsyncInit = function () {
|
21
21
|
FB.init({
|
22
|
-
appId: 'XXXXXX',
|
22
|
+
appId: 'XXXXXX',
|
23
23
|
cookie: true,
|
24
24
|
xfbml: true,
|
25
25
|
version: 'v2.11'
|
@@ -71,4 +71,10 @@
|
|
71
71
|
if (!window.FB) await createScript();
|
72
72
|
signIn();
|
73
73
|
}
|
74
|
+
```
|
75
|
+
|
76
|
+
エラー内容(ブラウザのコンソールログより)
|
77
|
+
```console
|
78
|
+
AuthClass - There is already a signed in user: {"id":"ap-northeast-1:XXXXX-XXXX-XXXX-XXXX-XXXXX","name":"user name","email":"user@example.com"} in your app.
|
79
|
+
You should not call Auth.federatedSignIn method again as it may cause unexpected behavior.
|
74
80
|
```
|
3
エラー個所追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -43,7 +43,7 @@
|
|
43
43
|
name: response.name,
|
44
44
|
email: response.email
|
45
45
|
};
|
46
|
-
await Auth.federatedSignIn(
|
46
|
+
await Auth.federatedSignIn( // ここが疎通せず、Cognitoへも何も反映されません。この関数は使い方間違っていますでしょうか?
|
47
47
|
"facebook",
|
48
48
|
{token: accessToken, expires_at},
|
49
49
|
user
|
2
リライト
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,11 +4,14 @@
|
|
4
4
|
- ユーザーAはFacebook認証を行い、その後はFacebookへ投稿、Facebookを用いたログインが行える
|
5
5
|
|
6
6
|
Facebook認証的なボタンをマイページなどに設置し、クリックするとアカウントとFacebookが紐づくようなイメージです。
|
7
|
-
今の所はFacebookによるOAuth認証までは終えていて、その後帰ってきたトークンをどのようにCognitoへ登録すれば良いのかわからずです・・。federatedSignIn関数を用いて認証を行おうとしましたが既に登録されているメールアドレス的なエラーになってしまいます...。根本的に考え方間違っていますかね...
|
8
7
|
|
8
|
+
今の所はFacebookによるOAuth認証までは終えていて、その後帰ってきたトークンをどのようにCognitoへ登録すれば良いのかわからずです・・。
|
9
|
+
|
10
|
+
federatedSignIn関数を用いて認証を行おうとしましたが既に登録されているメールアドレス的なエラーになってしまいます...。根本的に考え方間違っていますかね...
|
11
|
+
|
9
12
|
何か方法はありますでしょうか。ご教授のほどお願い申し上げます。
|
10
13
|
|
11
|
-
FacebookへのOAuth処理
|
14
|
+
**FacebookへのOAuth処理**
|
12
15
|
```javascript
|
13
16
|
import {Auth} from 'aws-amplify'
|
14
17
|
async function facebookAuth() {
|
@@ -36,19 +39,15 @@
|
|
36
39
|
if (!accessToken) return;
|
37
40
|
const fb = window.FB;
|
38
41
|
fb.api('/me', {fields: 'name,email'}, async response => {
|
39
|
-
const user = {
|
42
|
+
const user = { // emailとnameは取得できています
|
40
43
|
name: response.name,
|
41
44
|
email: response.email
|
42
45
|
};
|
43
|
-
try {
|
44
|
-
|
46
|
+
await Auth.federatedSignIn(
|
45
|
-
|
47
|
+
"facebook",
|
46
|
-
|
48
|
+
{token: accessToken, expires_at},
|
47
|
-
|
49
|
+
user
|
48
|
-
|
50
|
+
);
|
49
|
-
} catch (e) {
|
50
|
-
// ToDo: Error case :CognitoのUserPoolへのフェデレーションID登録失敗
|
51
|
-
}
|
52
51
|
});
|
53
52
|
}
|
54
53
|
const signIn = () => {
|
1
まずいコード乗っています!!!
title
CHANGED
File without changes
|
body
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
return new Promise(resolve => {
|
17
17
|
window.fbAsyncInit = function () {
|
18
18
|
FB.init({
|
19
|
-
appId: '
|
19
|
+
appId: 'XXXXXX', // ToDo: 環境変数などから取得すること
|
20
20
|
cookie: true,
|
21
21
|
xfbml: true,
|
22
22
|
version: 'v2.11'
|