user4798111
user4798111

Reputation:

Apache Oltu Github integration example with Spring MVC

I'm developing an "Apache Oltu Spring MVC Github" integration example. In this example I will be sending "App ID" and "Secret" to get the "access_token" in order to access the protected resources like "Gist", "user" etc.

So first step is to create / register the "App" using https://github.com/settings/applications/new. Once you create a App make sure to Note: AppID and Secret, we need these values to be used in Spring code.

To develop this functionality / code - I search a lot and I did not find any ready made code. So I decided to furnish / explain my code below. So one can find these links useful.

I've taken a reference of following URL's to developed whole code:-

Upvotes: 1

Views: 999

Answers (2)

PAA
PAA

Reputation: 11975

The user4798111 has mentioned is correct and just adding some more details. Pre-requisite, you need to register App on Github. Once you registered the App, you will get the CLIENT_SECRET,CLIENT_ID to be used to get the Protected resources from the github.

If you're using the OAuthClientRequest API to to make an initial call, you need to have the following details

private static final String AUTHORIZATION_URL = "https://github.com/login/oauth/authorize";
    private static final String CLIENT_ID = "8515a1e4XXXXXXX";
    private static final String CLIENT_SECRET = "ae3487601d891d257f7193XXXXXXXXX";
    private static final String REDIRECT_URL = "http://localhost:8080/apache-oltu/github/redirect";
    private static final String ACCESS_TOKEN_URL = "https://github.com/login/oauth/access_token";

    @RequestMapping(value = "/auth", method = RequestMethod.GET)
    public String authenticate() throws OAuthSystemException {
        OAuthClientRequest request = OAuthClientRequest
                .authorizationLocation(AUTHORIZATION_URL)
                .setClientId(CLIENT_ID)
                .setRedirectURI(REDIRECT_URL)
                .setResponseType("code")
                .setScope("user,gist,user:email,user:follow,public_repo,repo,repo_deployment,repo:status,repo:invite")
                .buildQueryMessage();

        System.out.println("REDIRECT TO: "+request.getLocationUri());
        return "redirect:" + request.getLocationUri();
    }

The same something simllar you would need to use like below

request= new OAuthBearerClientRequest("https://api.github.com/user").
                setAccessToken(oAuthResponse.getAccessToken()).
                buildQueryMessage();

The information about the scopes and other details can be found here:

The result which could see is below for reference:

{  
   "login":"JavaHelper",
   "id":8208031,
   "avatar_url":"https://avatars0.githubusercontent.com/u/8208031?v=4",
   "gravatar_id":"",
   "url":"https://api.github.com/users/JavaHelper",
   "html_url":"https://github.com/JavaHelper",
   "followers_url":"https://api.github.com/users/JavaHelper/followers",
   "following_url":"https://api.github.com/users/JavaHelper/following{/other_user}",
   "gists_url":"https://api.github.com/users/JavaHelper/gists{/gist_id}",
   "starred_url":"https://api.github.com/users/JavaHelper/starred{/owner}{/repo}",
   "subscriptions_url":"https://api.github.com/users/JavaHelper/subscriptions",
   "organizations_url":"https://api.github.com/users/JavaHelper/orgs",
   "repos_url":"https://api.github.com/users/JavaHelper/repos",
   "events_url":"https://api.github.com/users/JavaHelper/events{/privacy}",
   "received_events_url":"https://api.github.com/users/JavaHelper/received_events",
   "type":"User",
   "site_admin":false,
   "name":"JavaProgramer",
   "company":null,
   "blog":"",
   "location":null,
   "email":null,
   "hireable":null,
   "bio":null,
   "public_repos":45,
   "public_gists":0,
   "followers":4,
   "following":60,
   "created_at":"2014-07-19T10:03:42Z",
   "updated_at":"2017-09-09T12:55:57Z",
   "private_gists":0,
   "total_private_repos":0,
   "owned_private_repos":0,
   "disk_usage":142270,
   "collaborators":0,
   "two_factor_authentication":false,
   "plan":{  
      "name":"free",
      "space":976562499,
      "collaborators":0,
      "private_repos":0
   }
}

Upvotes: 0

user4798111
user4798111

Reputation:

Attached is the screen shot to register the "App" on Github. "MyApp" is the App that I created.

enter image description here

Use the same code from http://www.jasha.eu/blogposts/2013/09/retrieve-facebook-profile-data-java-apache-oltu.html, just make sure to change the

AUTHORIZATION_URL = "https://github.com/login/oauth/authorize";

ACCESS_TOKEN_URL = "https://github.com/login/oauth/access_token"

To get Protected Resource like User Profile use: https://api.github.com/user

The output I get when run the code:

enter image description here

Upvotes: 1

Related Questions