使用android获取linkedin accessToken的代码

时间:2011-06-23 04:53:33

标签: android-webview

这是我用来获取accessToken

的代码

最终LinkedInOAuthService oAuthService = LinkedInOAuthServiceFactory.getInstance()。createLinkedInOAuthService(Constants.CONSUMER_KEY,Constants.CONSUMER_SECRET);

final LinkedInApiClientFactory factory = LinkedInApiClientFactory.newInstance(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET);

LinkedInRequestToken liToken;
LinkedInApiClient client;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
   setContentView(R.layout.notepad_list);





   mWebView = (WebView) findViewById(R.id.webview);

   mWebView.setVerticalScrollBarEnabled(false);

   mWebView.setHorizontalScrollBarEnabled(false);


   mWebView.getSettings().setJavaScriptEnabled(true);



   try

   {


       System.out.println("Fetching request token from LinkedIn...");



       liToken = oAuthService.getOAuthRequestToken(Constants.OAUTH_CALLBACK_URL);



    String    authUrl = liToken.getAuthorizationUrl();  
    System.out.println("authUrl=================================="+authUrl);





       mWebView.loadUrl(authUrl);




     mWebView.addJavascriptInterface(new MyInterface()
     , "htmlcontent");

当'mWebView.loadUrl(authUrl);'执行用户可以允许应用程序访问。并使用oauthToken和access_verifier重定向网址,我可以在网页视图中看到此消息:您无权使用OauthTOken和access_verifier打开此网址。

现在的问题是如何使用我的代码获取access_verifier,以便进行调用以获取accessToken。

* 这是intent-filter *

1 个答案:

答案 0 :(得分:0)

您正在布局中使用webview。你不能通过这种方式获得accessToken。您必须调用检索CALLBACK_URL的浏览器。使用以下代码来解决您的问题。

public void onCreate(Bundle savedInstanceState) {
    oAuthService = LinkedInOAuthServiceFactory
                    .getInstance()
                    .createLinkedInOAuthService(
                            getResources().getString(R.string.consumer_key),
                            getResources().getString(
                                    R.string.consumer_secret));

            factory = LinkedInApiClientFactory.newInstance(getResources()
                    .getString(R.string.consumer_key), getResources()
                    .getString(R.string.consumer_secret));

            liToken = oAuthService
                    .getOAuthRequestToken(WelcomeActivity.OAUTH_CALLBACK_URL); 

            i = new Intent(Intent.ACTION_VIEW, Uri
                                .parse(liToken.getAuthorizationUrl()));
            startActivity(i);
        } 

protected void onNewIntent(Intent intent) {
    String verifier = intent.getData().getQueryParameter("oauth_verifier");
    accessToken = oAuthService.getOAuthAccessToken(liToken, verifier);  
}

将此代码放入.manifest

中的活动代码中
<intent-filter >
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data
                android:host="callback"
                android:scheme="linkedin" />
        </intent-filter>