Simple library to integrate Github authentication to android app using OAuth.
This is a forked version of github-oauth I admire the work done by the real author. I was in search for a github auth library for android and this one perfectly matched for my usecase unfortunately when I started to use the library there was many issues related to dependency update AGP issues etc. so in order to fix those issues and tweaking some codes to make it compatible more for my usecase I decided to fork this and maintain a copy myself. Once again thank you for this wonderful library. My be in future I might condribute to the project.
compile 'com.github.geniushkg:oauthLibGithub:1.0.2'
Add to manifest
<uses-permission android:name="android.permission.INTERNET"/>
and activity declaration:
<activity android:name="com.hardikgoswami.oauthLibGithub.OauthActivity"/>
Initialise new Auth instance with credentials
- Client id : you get it from your github profile by creating new app.
Follow this tutorial - Client Secret : same as above.
- NextActivity : Thats your activity you want launch after user gets authenticated.
- Context : you can use context variable from place where initiate the process that is getActivity() from fragment or getapplicationcontext() from activity.
Sample initialization :
// Github ID and secret are generated in github.com profile
// package name is your packagename
// next activity is your activity with full name including package
// you can use debug(true) for logcat , use TAG = "github-oauth"
// scope can also be defined (optional)
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
GithubOauth
.Builder()
.withClientId(GITHUB_ID)
.withClientSecret(GITHUB_SECRET)
.withContext(context)
.packageName("com.hardikgoswami.github_oauth_lib")
.nextActivity("com.hardikgoswami.github_oauth_lib.UserActivity")
.debug(true)
.execute();
}
});
Note : Callback url can be as per your requirement or make it http://localhost while registering new Oauth application.
Note 2: Available scopes are presented on the table below
Scope | Description |
---|---|
repo:status | Access commit status |
repo_deployment | Access deployment status |
public_repo | Access public repositories |
admin:org | Full control of orgs and teams |
write:org | Read and write org and team membership |
read:org | Read org and team membership |
admin:public_key | Full control of user public keys |
write:public_key | Write user public keys |
read:public_key | Read user public keys |
admin:repo_hook | Full control of repository hooks |
write:repo_hook | Write repository hooks |
read:repo_hook | Read repository hooks |
admin:org_hook | Full control of organization hooks |
gist | Create gists |
notifications | Access notifications |
user | Update all user data |
read:user | Read all user profile data |
user:email | Access user email addresses (read-only) |
user:follow | Follow and unfollow users |
delete_repo | Delete repositories |
admin:gpg_key | Full control of user gpg keys (Developer Preview) |
write:gpg_key | Write user gpg keys |
read:gpg_key | Read user gpg keys |
Execute will launch a new activity with webview and user token will be stored in shared preference
shared preference name : github_prefs
String in preference : oauth_token
// Sample to read logged in user oauth token
public static final String PREFERENCE = "github_prefs";
sharedPreferences = getSharedPreferences(PREFERENCE, 0);
String oauthToken = sharedPreferences.getString("oauth_token", null);
Log.d(TAG, "oauth token for github loged in user is :" + oauthToken);
if you found any bug you can create issue or want to contribute feel free to PR.
For new programmer's -> do not hesitate, please send PR we both will learn something new. :)