2

I'm using OAuthSimple in Javascript with PIN based authentication (OOB flow). We are developing an HTML5 app which lives inside a mobile device's native wrapper using PhoneGap. There's not ANY server side (no URL at all), all requests are sent using the mobile device as a proxy.

So far I managed to:
- Get Request Token
- Redirect user to authorization page
- Got authorization PIN

I need sample code that shows how to get an Access Token using OAuthSimple Javascript library.
Any help will be appreciated. Thanks!

Bert
  • 143
  • 2
  • 7

2 Answers2

6

Not sure if you are the same person who posted on our forums recently (see post here https://developer.linkedin.com/forum/oauthsimple-request-access-token), but I replied with demo code on how to do just that using OAuthSimple.

The actual sample code can be found here: https://gist.github.com/efc88a38da25ff4e9283

If you need any help using it, don't hesitate to reach out!

-Jeremy

  • Yeah, it's me! :D I was about to add a reference to the thread on LinkedIn's forum too! Thanks again Jeremy! :) – Bert Jan 05 '12 at 16:27
  • Can you port here the correct complete javascript code with the autentication + one call? – Shyghar Nov 21 '14 at 16:13
  • what does 'OAuthSimple.js' contains? you haven't shared it's code. can you please tell me like how to get that access code? i'm able to get auth code, even though mu redirect URI is same as auth call, still i'm getting error. pls help. `https://stackoverflow.com/questions/29804501/linkedin-oauth2-authorization-code-error` i'm facing same problem – Prasanna Sep 24 '18 at 14:21
0

This will create a phonegap linkedIn login, its just a worked around code though, but this works atleast for me

    var consumer_key = "key";
    var shared_secret = "secrete";
    self.oauth = OAuthSimple(consumer_key, shared_secret);  var linkedInScope = 'r_basicprofile r_emailaddress w_messages r_network';
    var url = self.oauth.sign({action: "GET", path: "https://api.linkedin.com/uas/oauth/requestToken", parameters: {scope: linkedInScope, oauth_callback: "oob"}}).signed_url;
    var request = 'requestToken';
    var linkedInObj = new Object;
    function linkedInWorkAround(url,request,data){
        var callType = 'GET';
        var xhr = $.ajax({
            url         : url,
            beforeSend  : function(){
                $.mobile.loading( 'show' );
                if(request == 'linkedIn_login'){
                    callType = 'POST';
                }
            },
            timeout     : 8000,
            data        : data,
            type        : callType,
            success: function(r){
                $.mobile.loading( 'hide' );
                if(request == 'requestToken'){
                    var oauthRes = r.split('&');
                    $.each(oauthRes, function(k,v){
                        var resObj = v.split('=')
                        linkedInObj[resObj[0]] = resObj[1];
                    });
                    url = 'https://www.linkedin.com/uas/oauth/authenticate?scope='+linkedInScope+'&oauth_token='+linkedInObj.oauth_token;
                    request = 'oauth_token';
                    linkedInWorkAround(url,request);
                }
                else if(request == 'oauth_token'){
                    var accessCode = $(r).find('.access-code');
                    if(accessCode.size()){
                        self.oauth.reset();
                        var pin = $(r).find('.access-code').text();
                        url = self.oauth.sign({action: "GET", path: "https://api.linkedin.com/uas/oauth/accessToken", parameters: {scope: linkedInScope, oauth_verifier: pin}, signatures: linkedInObj}).signed_url;
                        request = 'accessToken';
                        linkedInWorkAround(url,request);
                    }
                    else{

                        $('.custom-linkedIn').remove();
                        var cloneIn = $(r).find('form').addClass('custom-linkedIn').clone();
                        $('a,span,select,.duration-label,.access',cloneIn).hide();
                        $('#pageLinkedIn .errMsgHolder').after(cloneIn)

                        $('#session_key-oauthAuthorizeForm').textinput();
                        $('#session_password-oauthAuthorizeForm').textinput();
                        $('input[type=submit]').button();
                        $('form.custom-linkedIn').submit(function(){
                            $('.errMsgHolder').hide().text('');
                            url = 'https://www.linkedin.com/uas/oauth/authorize/submit';
                            request = 'linkedIn_login';
                            var data = $(this).serialize();
                            linkedInWorkAround(url,request,data);
                            return false;
                        });
                    }
                }
                else if(request == 'linkedIn_login'){
                    self.oauth.reset();
                    var pin = $(r).find('.access-code').text();
                    url = self.oauth.sign({action: "GET", path: "https://api.linkedin.com/uas/oauth/accessToken", parameters: {scope: linkedInScope, oauth_verifier: pin}, signatures: linkedInObj}).signed_url;
                    request = 'accessToken';
                    linkedInWorkAround(url,request);
                }
                else if(request == 'accessToken'){
                    var oauthRes = r.split('&');
                    self.oauth.reset(); 
                    $.each(oauthRes, function(k,v){
                        var resObj = v.split('=')
                        linkedInObj[resObj[0]] = resObj[1];
                    });
                    url = self.oauth.sign({action: "GET", path: "https://api.linkedin.com/v1/people/~/email-address", signatures: linkedInObj}).signed_url;
                    request = 'getResultLinkedIn';
                    linkedInWorkAround(url,request);
                }
                else if(request == 'getResultLinkedIn'){
                    $('body').css({opacity:0});
                    var userLIemail = ($('#session_key-oauthAuthorizeForm').size()) ? $('#session_key-oauthAuthorizeForm').val() : $(r).text();

                }
            },
            error : function(a,b,c){
                alert('err')
                console.log(a,b,c)
                self._cs(a)
                $.mobile.loading( 'hide' );
                if(a.statusText.toLowerCase() == 'unauthorized'){
                    $('.errMsgHolder').show().text('The email address or password you provided does not match our records');
                }
            }
        })
    }
    linkedInWorkAround(url,request);
janbee
  • 46
  • 2