capacitor-native-google-one-tap-signin 0.0.13 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/.gradle/7.3.3/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/7.3.3/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/7.3.3/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/7.3.3/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/7.3.3/fileHashes/resourceHashesCache.bin +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/src/main/java/com/proventask/capacitor/GoogleAuth/GoogleAuth.java +131 -18
- package/package.json +1 -1
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
package com.proventask.capacitor.GoogleAuth;
|
|
2
2
|
|
|
3
3
|
import androidx.activity.result.ActivityResultCallback;
|
|
4
|
+
import androidx.activity.result.ActivityResultLauncher;
|
|
5
|
+
import androidx.activity.result.IntentSenderRequest;
|
|
4
6
|
import androidx.activity.result.contract.ActivityResultContracts;
|
|
5
7
|
import androidx.annotation.NonNull;
|
|
6
8
|
import androidx.annotation.Nullable;
|
|
@@ -30,6 +32,7 @@ import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
|
|
|
30
32
|
import com.google.android.gms.auth.api.signin.GoogleSignInClient;
|
|
31
33
|
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
|
|
32
34
|
import com.google.android.gms.common.api.ApiException;
|
|
35
|
+
import com.google.android.gms.common.api.ResolvableApiException;
|
|
33
36
|
import com.google.android.gms.common.api.Scope;
|
|
34
37
|
import com.google.android.gms.tasks.Task;
|
|
35
38
|
|
|
@@ -73,6 +76,8 @@ import java.util.concurrent.Executors;
|
|
|
73
76
|
|
|
74
77
|
@CapacitorPlugin()
|
|
75
78
|
public class GoogleAuth extends Plugin {
|
|
79
|
+
|
|
80
|
+
private static final String TAG = "GoogleAuth Plugin";
|
|
76
81
|
private final static String VERIFY_TOKEN_URL = "https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=";
|
|
77
82
|
private final static String FIELD_TOKEN_EXPIRES_IN = "expires_in";
|
|
78
83
|
private final static String FIELD_ACCESS_TOKEN = "accessToken";
|
|
@@ -84,14 +89,22 @@ public class GoogleAuth extends Plugin {
|
|
|
84
89
|
public static final int KAssumeStaleTokenSec = 60;
|
|
85
90
|
|
|
86
91
|
private static final int REQ_ONE_TAP = 2;
|
|
92
|
+
private static final int RC_CREDENTIALS_READ = 3;
|
|
87
93
|
|
|
88
94
|
private String webClientId;
|
|
89
95
|
private SignInClient oneTapClient;
|
|
90
96
|
private BeginSignInRequest signInRequest;
|
|
91
97
|
private CredentialsClient mCredentialsClient;
|
|
92
98
|
|
|
99
|
+
private GoogleSignInClient mSignInClient;
|
|
100
|
+
|
|
93
101
|
private String callbackId;
|
|
94
102
|
|
|
103
|
+
private boolean mIsResolving = false;
|
|
104
|
+
private ActivityResultLauncher<IntentSenderRequest> googleOneTapSignInActivityResultHandler;
|
|
105
|
+
//private ActivityResultLauncher<IntentSender> googleOneTapSignInActivityResultHandler;
|
|
106
|
+
//private ActivityResultLauncher<Intent> googleOneTapSignInActivityResultHandler;
|
|
107
|
+
|
|
95
108
|
@Override
|
|
96
109
|
public void load() {
|
|
97
110
|
String clientId = getConfig()
|
|
@@ -122,31 +135,67 @@ public class GoogleAuth extends Plugin {
|
|
|
122
135
|
// GoogleSignInOptions googleSignInOptions = googleSignInBuilder.build();
|
|
123
136
|
// googleSignInClient = GoogleSignIn.getClient(this.getContext(), googleSignInOptions);
|
|
124
137
|
|
|
125
|
-
oneTapClient = Identity.getSignInClient(this.
|
|
138
|
+
oneTapClient = Identity.getSignInClient(this.getActivity());
|
|
126
139
|
|
|
127
140
|
mCredentialsClient = Credentials.getClient(this.getContext());
|
|
128
141
|
|
|
142
|
+
GoogleSignInOptions.Builder gsoBuilder = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
|
|
143
|
+
.requestIdToken(clientId);
|
|
144
|
+
|
|
145
|
+
mSignInClient = GoogleSignIn.getClient(this.getContext(), gsoBuilder.build());
|
|
146
|
+
|
|
129
147
|
// todo
|
|
130
148
|
// reactContext.addActivityEventListener(new RNGoogleOneTapSignInActivityEventListener());
|
|
131
149
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
150
|
+
googleOneTapSignInActivityResultHandler = bridge.registerForActivityResult(
|
|
151
|
+
new ActivityResultContracts.StartIntentSenderForResult(), // new ActivityResultContracts.StartActivityForResult(),
|
|
152
|
+
(ActivityResultCallback<ActivityResult>) result -> {
|
|
153
|
+
|
|
154
|
+
var code = result.getResultCode();
|
|
155
|
+
Intent data = result.getData();
|
|
156
|
+
|
|
157
|
+
if (code == Activity.RESULT_OK) {
|
|
158
|
+
//handleSignInResult(result);
|
|
159
|
+
|
|
160
|
+
try {
|
|
161
|
+
SignInCredential credential = oneTapClient.getSignInCredentialFromIntent(data);
|
|
162
|
+
} catch (ApiException e) {
|
|
163
|
+
throw new RuntimeException(e);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
var isCancel = code == Activity.RESULT_CANCELED;
|
|
167
|
+
|
|
168
|
+
// handleSignInResult(result);
|
|
169
|
+
|
|
170
|
+
// switch (result.getResultCode()) {
|
|
171
|
+
// case Activity.RESULT_OK:
|
|
172
|
+
// Intent data = result.getData();
|
|
173
|
+
// handleSignInResult(result);
|
|
138
174
|
//
|
|
139
|
-
//
|
|
140
|
-
//
|
|
141
|
-
//
|
|
142
|
-
//
|
|
143
|
-
//
|
|
144
|
-
//
|
|
145
|
-
//
|
|
146
|
-
//
|
|
147
|
-
//
|
|
148
|
-
//
|
|
149
|
-
//
|
|
175
|
+
// PluginCall savedCall = this.bridge.getSavedCall(callbackId);
|
|
176
|
+
// var intent = result.getData();
|
|
177
|
+
//
|
|
178
|
+
//
|
|
179
|
+
// //PaymentData paymentData = PaymentData.getFromIntent(data);
|
|
180
|
+
// // ...
|
|
181
|
+
// break;
|
|
182
|
+
// case Activity.RESULT_CANCELED:
|
|
183
|
+
// // ...
|
|
184
|
+
// break;
|
|
185
|
+
//}
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
private void handleSignInResult(ActivityResult result) {
|
|
191
|
+
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(result.getData());
|
|
192
|
+
try {
|
|
193
|
+
var account = task.getResult();
|
|
194
|
+
var email = account.getEmail();
|
|
195
|
+
Log.d(TAG, "handleSignInResult() called with: result = $account");
|
|
196
|
+
} catch (Exception ex) {
|
|
197
|
+
Log.e(TAG, "handleSignInResult: ", ex);
|
|
198
|
+
}
|
|
150
199
|
}
|
|
151
200
|
|
|
152
201
|
// private class RNGoogleOneTapSignInActivityEventListener extends BaseActivityEventListener {
|
|
@@ -194,6 +243,68 @@ public class GoogleAuth extends Plugin {
|
|
|
194
243
|
}
|
|
195
244
|
}
|
|
196
245
|
|
|
246
|
+
@PluginMethod()
|
|
247
|
+
public void signIn3(PluginCall call) {
|
|
248
|
+
CredentialRequest.Builder crBuilder = new CredentialRequest.Builder();
|
|
249
|
+
crBuilder.setAccountTypes(IdentityProviders.GOOGLE);
|
|
250
|
+
|
|
251
|
+
this.callbackId = call.getCallbackId();
|
|
252
|
+
this.bridge.saveCall(call);
|
|
253
|
+
|
|
254
|
+
mCredentialsClient.request(crBuilder.build()).addOnCompleteListener(
|
|
255
|
+
new OnCompleteListener<CredentialRequestResponse>() {
|
|
256
|
+
@Override
|
|
257
|
+
public void onComplete(@NonNull Task<CredentialRequestResponse> task) {
|
|
258
|
+
|
|
259
|
+
if (task.isSuccessful()) {
|
|
260
|
+
// Auto sign-in success
|
|
261
|
+
//handleCredential(task.getResult().getCredential());
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
Exception e = task.getException();
|
|
266
|
+
if (e instanceof ResolvableApiException) {
|
|
267
|
+
// Getting credential needs to show some UI, start resolution
|
|
268
|
+
ResolvableApiException rae = (ResolvableApiException) e;
|
|
269
|
+
resolveResult(rae, RC_CREDENTIALS_READ);
|
|
270
|
+
} else {
|
|
271
|
+
Log.w(TAG, "request: not handling exception", e);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
private void resolveResult(ResolvableApiException rae, int requestCode) {
|
|
278
|
+
if (!mIsResolving) {
|
|
279
|
+
//try {
|
|
280
|
+
// var resolutionIntent = rae.getResolution();
|
|
281
|
+
var intentSender = rae.getResolution().getIntentSender();
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
var intentSenderRequest = new IntentSenderRequest.Builder(intentSender).build();
|
|
285
|
+
googleOneTapSignInActivityResultHandler.launch(intentSenderRequest);
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
//rae.startResolutionForResult(this.getActivity(), requestCode);
|
|
289
|
+
//googleOneTapSignInActivityResultHandler.launch(mSignInClient.getSignInIntent());
|
|
290
|
+
|
|
291
|
+
// var x = bridge.registerForActivityResult(
|
|
292
|
+
// new ActivityResultContracts.StartIntentSenderForResult(),
|
|
293
|
+
// (ActivityResultCallback<ActivityResult>) result -> {
|
|
294
|
+
//
|
|
295
|
+
// Log.d(TAG, "signIn() called ${it.data}");
|
|
296
|
+
// Log.d(TAG, "signIn() called ${it.resultCode}");
|
|
297
|
+
//
|
|
298
|
+
// });
|
|
299
|
+
|
|
300
|
+
mIsResolving = true;
|
|
301
|
+
//} catch (IntentSender.SendIntentException e) {
|
|
302
|
+
// Log.e(TAG, "Failed to send Credentials intent.", e);
|
|
303
|
+
// mIsResolving = false;
|
|
304
|
+
//}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
197
308
|
@PluginMethod()
|
|
198
309
|
public void signIn(PluginCall call) {
|
|
199
310
|
if (oneTapClient == null) {
|
|
@@ -230,6 +341,8 @@ public class GoogleAuth extends Plugin {
|
|
|
230
341
|
// runOnUiThread(new Runnable() {
|
|
231
342
|
// @Override
|
|
232
343
|
// public void run() {
|
|
344
|
+
|
|
345
|
+
|
|
233
346
|
oneTapClient.beginSignIn(signInRequest)
|
|
234
347
|
.addOnSuccessListener(new MyEventListener(call))
|
|
235
348
|
.addOnFailureListener(new MyEventListener(call));
|