Python API's Require OAUTH_TOKEN and OAUTH_TOKEN_SECRET Keys
Question: How do I get these keys from LinkedIn?

    
    
    OAUTH_TOKEN and OAUTH_TOKEN_SECRET 
    

When I register my application on LinkedIn Developer, I'm only getting:

    
    
    CONSUMER_KEY, CONSUMER_SECRET
    

I have two Python functions which require it.

E.g. -

    
    
    from linkedin import linkedin # pip install python-linkedin
    
    # Define CONSUMER_KEY, CONSUMER_SECRET,  
    # USER_TOKEN, and USER_SECRET from the credentials 
    # provided in your LinkedIn application
    
    CONSUMER_KEY = ''
    CONSUMER_SECRET = ''
    USER_TOKEN = ''
    USER_SECRET = ''
    
    RETURN_URL = '' # Not required for developer authentication
    
    # Instantiate the developer authentication class
    
    auth = linkedin.LinkedInDeveloperAuthentication(CONSUMER_KEY, CONSUMER_SECRET, 
                                    USER_TOKEN, USER_SECRET, 
                                    RETURN_URL, 
                                    permissions=linkedin.PERMISSIONS.enums.values())
    
    # Pass it in to the app...
    
    app = linkedin.LinkedInApplication(auth)
    
    # Use the app...
    
    app.get_profile()
    

and #!/usr/bin/env python # encoding: utf-8 """ linkedin-2-query.py

    
    
    Created by Thomas Cabrol on 2012-12-03.
    Copyright (c) 2012 dataiku. All rights reserved.
    
    Building the LinkedIn Graph
    
    import oauth2 as oauth
    import urlparse
    import simplejson
    import codecs
    
    CONSUMER_KEY = "your-consumer-key-here"
    CONSUMER_SECRET = "your-consumer-secret-here"
    OAUTH_TOKEN = "your-oauth-token-here"
    OAUTH_TOKEN_SECRET = "your-oauth-token-secret-here"
    
    OUTPUT = "linked.csv"
    
    def linkedin_connections():
        # Use your credentials to build the oauth client
        consumer = oauth.Consumer(key=CONSUMER_KEY, secret=CONSUMER_SECRET)
        token = oauth.Token(key=OAUTH_TOKEN, secret=OAUTH_TOKEN_SECRET)
        client = oauth.Client(consumer, token)
        # Fetch first degree connections
        resp, content = client.request('http://api.linkedin.com/v1/people/~/connections?format=json')
        results = simplejson.loads(content)    
        # File that will store the results
        output = codecs.open(OUTPUT, 'w', 'utf-8')
        # Loop thru the 1st degree connection and see how they connect to each other
        for result in results["values"]:
            con = "%s %s" % (result["firstName"].replace(",", " "), result["lastName"].replace(",", " "))
            print >>output, "%s,%s" % ("Thomas Cabrol",  con)
            # This is the trick, use the search API to get related connections
            u = "https://api.linkedin.com/v1/people/%s:(relation-to-viewer:(related-connections))?format=json" % result["id"]
            resp, content = client.request(u)
            rels = simplejson.loads(content)
            try:
                for rel in rels['relationToViewer']['relatedConnections']['values']:
                    sec = "%s %s" % (rel["firstName"].replace(",", " "), rel["lastName"].replace(",", " "))
                    print >>output, "%s,%s" % (con, sec)
            except:
                pass
    
    
    if __name__ == '__main__':
        linkedin_connections()
    

I received this document from LinkedIn:

<https://developer.linkedin.com/blog/posts/2015/transition-faq>

Does this mean the API is now closed?


Answer: OAuth 1.0a is still supported by LinkedIn, but it is no longer encouraging new
implementations.

You must request your own OAuth 1.0a token/secret values as part of the auth
workflow. LinkedIn's application management console no longer automatically
generates one for you as a convenience.

Switching to OAuth 2.0 would probably be an easier approach.

Further, please note that the call your library appears to be making to get a
user's connections is no longer publicly available via the API as per the
announcement made on LinkedIn's developer blog back in February
(<https://developer.linkedin.com/blog/posts/2015/developer-program-changes>).
So getting authentication working may not be the only problem you encounter.

