質問編集履歴

2

文法の修正

2021/01/26 17:28

投稿

wada_yusuke
wada_yusuke

スコア3

test CHANGED
File without changes
test CHANGED
@@ -18,9 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- '''
22
-
23
- Gemfile
21
+ ```Gemfile
24
22
 
25
23
 
26
24
 
@@ -42,11 +40,11 @@
42
40
 
43
41
  gem 'dotenv-rails'
44
42
 
45
- '''
43
+ ```
46
-
47
-
48
-
44
+
45
+
46
+
49
- '''
47
+ ```
50
48
 
51
49
  devise.rb
52
50
 
@@ -58,9 +56,9 @@
58
56
 
59
57
  config.secret_key = ENV['SECRET_KEY_BASE']
60
58
 
61
- '''
59
+ ```
62
-
60
+
63
- '''
61
+ ```
64
62
 
65
63
  User.rb
66
64
 
@@ -186,7 +184,7 @@
186
184
 
187
185
  end
188
186
 
189
- '''
187
+ ```
190
188
 
191
189
 
192
190
 

1

他の要素を追加した

2021/01/26 17:28

投稿

wada_yusuke
wada_yusuke

スコア3

test CHANGED
@@ -1 +1 @@
1
- google api ログイン機能がheroku push上手く動かい。
1
+ google api ログイン機能を実装したローカル環境では動いたが上手くheroku pushも同様に動かしたい。
test CHANGED
@@ -1,6 +1,6 @@
1
+ google sns認証機能をつけました。
2
+
1
- google api がheroku push後にて上手く動かないです。
3
+ ローカル環境問題なく動きました、しかしheroku push後上手く動かないです。
2
-
3
- ローカル環境では動いています。
4
4
 
5
5
 
6
6
 
@@ -60,6 +60,136 @@
60
60
 
61
61
  '''
62
62
 
63
+ '''
64
+
65
+ User.rb
66
+
67
+ class User < ApplicationRecord
68
+
69
+
70
+
71
+ devise :omniauthable, :database_authenticatable, :registerable, :recoverable,
72
+
73
+ :rememberable, :validatable
74
+
75
+
76
+
77
+ has_many :sns_credentials, dependent: :destroy
78
+
79
+ has_many :tweets
80
+
81
+ has_many :comments
82
+
83
+
84
+
85
+ with_options presence: true do
86
+
87
+ validates :name
88
+
89
+ end
90
+
91
+ validates :password, length: { minimum: 6 },confirmation: true,format: { with: /\A(?=.*?[a-z])(?=.*?[\d])\w{6,12}\z/ }
92
+
93
+
94
+
95
+ def self.without_sns_data(auth)
96
+
97
+ user = User.where(email: auth.info.email).first
98
+
99
+
100
+
101
+ if user.present?
102
+
103
+ sns = SnsCredential.create(
104
+
105
+ uid: auth.uid,
106
+
107
+ provider: auth.provider,
108
+
109
+ user_id: user.id
110
+
111
+ )
112
+
113
+ else
114
+
115
+ user = User.new(
116
+
117
+ name: auth.info.name,
118
+
119
+ email: auth.info.email,
120
+
121
+ )
122
+
123
+ sns = SnsCredential.new(
124
+
125
+ uid: auth.uid,
126
+
127
+ provider: auth.provider
128
+
129
+ )
130
+
131
+ end
132
+
133
+ return { user: user ,sns: sns}
134
+
135
+ end
136
+
137
+
138
+
139
+ def self.with_sns_data(auth, snscredential)
140
+
141
+ user = User.where(id: snscredential.user_id).first
142
+
143
+ unless user.present?
144
+
145
+ user = User.new(
146
+
147
+ name: auth.info.name,
148
+
149
+ email: auth.info.email,
150
+
151
+ )
152
+
153
+ end
154
+
155
+ return {user: user}
156
+
157
+ end
158
+
159
+
160
+
161
+ def self.find_oauth(auth)
162
+
163
+ uid = auth.uid
164
+
165
+ provider = auth.provider
166
+
167
+ snscredential = SnsCredential.where(uid: uid, provider: provider).first
168
+
169
+ if snscredential.present?
170
+
171
+ user = with_sns_data(auth, snscredential)[:user]
172
+
173
+ sns = snscredential
174
+
175
+ else
176
+
177
+ user = without_sns_data(auth)[:user]
178
+
179
+ sns = without_sns_data(auth)[:sns]
180
+
181
+ end
182
+
183
+ return { user: user ,sns: sns}
184
+
185
+ end
186
+
187
+ end
188
+
189
+ '''
190
+
191
+
192
+
63
193
  上記を.envに apiで取得したGOOGLE_CLIENT_ID、GOOGLE_CLIENT_SECRET、環境変数で定義したSECRET_KEY_BASEを記述しています。
64
194
 
65
195
  そしてgitignoreにてgithubに上がらない様に明記しています。
@@ -70,6 +200,20 @@
70
200
 
71
201
  GOOGLE_CLIENT_ID GOOGLE_CLIENT_SECRET は定義してありますがそれでも上手く行きません。
72
202
 
203
+
204
+
205
+ 承認済みのリダイレクト URI
206
+
207
+ http://localhost:3000/users/auth/google_oauth2/callback
208
+
209
+ https://blog-app-32422.herokuapp.com/users/auth/google_oauth2/callback
210
+
211
+ ローカルとheroku push両方記述しています。
212
+
213
+
214
+
215
+
216
+
73
217
  初めてgoogle apiをつけたので分からない事だらけです。
74
218
 
75
219
  よろしければご教授願いたいです。