Enhanced OAuth 2.0 Implementation with Dynamic Redirect URIs and Popup Authentication (#5566)

* Set custom parameter redirect URI

* Red border

* Blue border
This commit is contained in:
hunteraraujo
2023-10-05 22:07:32 -07:00
committed by GitHub
parent bd1de98c84
commit 35efc897df

View File

@@ -7,24 +7,61 @@ class AuthService {
clientId:
"387936576242-iejdacrjljds7hf99q0p6eqna8rju3sb.apps.googleusercontent.com");
// Sign in with Google using redirect
// Sign in with Google using popup
Future<UserCredential?> signInWithGoogle() async {
try {
final GoogleAuthProvider googleProvider = GoogleAuthProvider();
await _auth.signInWithRedirect(googleProvider);
return await _auth.getRedirectResult();
// Step 1: Detect the current hostname
String hostname = Uri.base.host;
// Step 2: Determine the redirect URI
String redirectUri;
if (hostname.contains('github.dev')) {
// If running in Github Codespaces
redirectUri = Uri.base.toString();
} else {
// For local development or other environments, set accordingly
redirectUri = 'http://localhost:8000'; // Example for local development
}
// Step 3: Update OAuth 2.0 provider configuration dynamically
googleProvider.setCustomParameters({'redirect_uri': redirectUri});
// Use signInWithPopup instead of signInWithRedirect
final result = await _auth.signInWithPopup(googleProvider);
print(result);
return result;
} catch (e) {
print("Error during Google Sign-In: $e");
return null;
}
}
// Sign in with GitHub using redirect
// Sign in with GitHub using popup
Future<UserCredential?> signInWithGitHub() async {
try {
final GithubAuthProvider githubProvider = GithubAuthProvider();
await _auth.signInWithRedirect(githubProvider);
return await _auth.getRedirectResult();
// Step 1: Detect the current hostname
String hostname = Uri.base.host;
// Step 2: Determine the redirect URI
String redirectUri;
if (hostname.contains('github.dev')) {
// If running in Github Codespaces
redirectUri = Uri.base.toString();
} else {
// For local development or other environments, set accordingly
redirectUri = 'http://localhost:8000'; // Example for local development
}
// Step 3: Update OAuth 2.0 provider configuration dynamically
githubProvider.setCustomParameters({'redirect_uri': redirectUri});
// Use signInWithPopup instead of signInWithRedirect
final result = await _auth.signInWithPopup(githubProvider);
return result;
} catch (e) {
print("Error during GitHub Sign-In: $e");
return null;