github_oauth

Last updated:

0 purchases

github_oauth Image
github_oauth Images
Add to Cart

Description:

github oauth

GitHub OAuth for Flutter #
github_oauth is a Flutter package that simplifies the process of integrating GitHub OAuth authentication into your app. With this package, you can provide a seamless GitHub sign-in experience, handle token exchanges, and authenticate users securely.
Features #

Complete OAuth2 Flow: Handles the entire GitHub OAuth process, from user login to token retrieval.
Customizable UI: Customize the sign-in page title and WebView configuration to match your app's branding.
WebView Integration: Provides a native WebView for a smooth sign-in experience.
Secure Token Handling: Retrieve and manage GitHub access tokens securely.
Comprehensive Error Handling: Manage errors throughout the OAuth process.

Installation #
Add github_oauth to your pubspec.yaml:
dependencies:
github_oauth: latest_version
copied to clipboard
Then run flutter pub get to install the package.
Usage #
1. Setup GitHub OAuth App #
To use GitHub OAuth, you need to set up an OAuth app on GitHub. Follow these steps:

Go to GitHub Developer Settings.
Register a new OAuth application.
Set your app's redirect URI (e.g., yourapp://callback).

2. Configure GitHubSignIn #
Import the package and initialize GitHubSignIn with your GitHub OAuth credentials. Use the dotenv package to manage sensitive information:
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:github_oauth/github_oauth.dart';

final gitHubSignIn = GitHubSignIn(
clientId: dotenv.env['GITHUB_CLIENT_ID']!,
clientSecret: dotenv.env['GITHUB_CLIENT_SECRET']!,
redirectUrl: dotenv.env['GITHUB_REDIRECT_URL']!,
);
copied to clipboard
3. Sign In with GitHub #
Call the signIn method to trigger the OAuth flow:
void _signInWithGitHub(BuildContext context) async {
final result = await gitHubSignIn.signIn(context);

if (result.status == GitHubSignInResultStatus.ok) {
// Successfully signed in
print("Access Token: ${result.token}");
print("User Profile: ${result.userProfile}");
} else {
// Handle error
print("Sign In Failed: ${result.errorMessage}");
}
}
copied to clipboard
4. Customize WebView #
You can customize the WebView used during the sign-in process by passing additional parameters to GitHubSignInPage:
GitHubSignInPage(
url: 'authorization-url',
redirectUrl: 'redirect-url',
title: 'Sign in with GitHub',
userAgent: 'Custom User Agent',
clearCache: true,
);
copied to clipboard
Example #
Here's a complete example of how to use the github_oauth package:
import 'package:flutter/material.dart';
import 'package:github_oauth/github_oauth.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';

void main() async {
await dotenv.load();
runApp(MyApp());
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: SignInPage(),
);
}
}

class SignInPage extends StatelessWidget {
final GitHubSignIn githubSignIn = GitHubSignIn(
clientId: dotenv.env['GITHUB_CLIENT_ID']!,
clientSecret: dotenv.env['GITHUB_CLIENT_SECRET']!,
redirectUrl: dotenv.env['GITHUB_REDIRECT_URL']!,
);

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('GitHub OAuth Example')),
body: Center(
child: ElevatedButton(
onPressed: () async {
final result = await githubSignIn.signIn(context);

if (result.status == GitHubSignInResultStatus.ok) {
// Successfully signed in
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Token: ${result.token}')),
);
} else {
// Error handling
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Error: ${result.errorMessage}')),
);
}
},
child: Text('Sign in with GitHub'),
),
),
);
}
}
copied to clipboard
Error Handling #
The GitHubSignInResult includes status and error messages, which can help you handle various scenarios:
if (result.status == GitHubSignInResultStatus.ok) {
// Successfully signed in
} else if (result.status == GitHubSignInResultStatus.cancelled) {
// User cancelled the sign-in process
} else {
// Sign-in failed
print('Error: ${result.errorMessage}');
}
copied to clipboard
Contribution #
Contributions are welcome! If you find a bug or have an idea for a new feature, feel free to open an issue or submit a pull request.
License #
This package is licensed under the MIT License. See the LICENSE file for more details.

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.