5

LinkedInをAndroidと統合しようとしています。チュートリアルを使用して、次のコードを適用しました...

private void setWebView()
    {
        LinkedinDialog.oAuthService = LinkedInOAuthServiceFactory.getInstance().createLinkedInOAuthService(LINKEDIN_CONSUMER_KEY, LINKEDIN_CONSUMER_SECRET);
        LinkedinDialog.factory = LinkedInApiClientFactory.newInstance(LINKEDIN_CONSUMER_KEY, LINKEDIN_CONSUMER_SECRET);

        LinkedinDialog.liToken = LinkedinDialog.oAuthService.getOAuthRequestToken(OAUTH_CALLBACK_URL);

        WebView mWebView = (WebView) findViewById(R.id.webkitWebView1);
        mWebView.getSettings().setJavaScriptEnabled(true);

        Log.i("LinkedinSample", LinkedinDialog.liToken.getAuthorizationUrl());
        mWebView.loadUrl(LinkedinDialog.liToken.getAuthorizationUrl());
        mWebView.setWebViewClient(new HelloWebViewClient());

        mWebView.setPictureListener(new PictureListener()
        {
            public void onNewPicture(WebView view, Picture picture)
            {
                if(progressDialog != null && progressDialog.isShowing())
                {
                    progressDialog.dismiss(); 
                }

            }
        });

    }

次のエラーが発生します

LinkedinDialog.liToken = LinkedinDialog.oAuthService.getOAuthRequestToken(OAUTH_CALLBACK_URL);




07-22 17:32:08.026: E/AndroidRuntime(26733): FATAL EXCEPTION: main
07-22 17:32:08.026: E/AndroidRuntime(26733): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.devicebee.app.transportfinder/com.devicebee.app.transportfinder.LinkedInActivity}: com.google.code.linkedinapi.client.oauth.LinkedInOAuthServiceException: oauth.signpost.exception.OAuthCommunicationException: Communication with the service provider failed: https://api.linkedin.com/uas/oauth/requestToken

私はインターネットを検索しました、そして、いくつかの投稿によると、それは私がいくつかの代理人の下にいるからです。しかし、私は代理人の下にいないと確信しています。誰かが私に何をすべきか教えてくれたら親切に。よろしくお願いします

4

2 に答える 2

1

ほとんどの場合、ネットワークが許可されていないUIスレッドでこれを実行しようとしています。AsyncTaskでoauth呼び出しを実装する必要があります。

UIスレッドでのネットワーク呼び出しは、Android3.0まで許可されていました。あなたがフォローしているチュートリアルは、おそらくその変更が行われる前に書かれたものです。

--EDIT--これが当てはまるかどうかをテストするには、アプリケーションターゲットをAPI 10に設定して、問題が解決するかどうかを確認します。

于 2012-08-02T18:41:01.300 に答える
0

わかりました、これは私が使用したものであり、今は正常に動作します

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Toast;

import com.google.code.linkedinapi.client.LinkedInApiClient;
import com.google.code.linkedinapi.client.LinkedInApiClientFactory;
import com.google.code.linkedinapi.client.oauth.LinkedInAccessToken;
import com.google.code.linkedinapi.client.oauth.LinkedInOAuthService;
import com.google.code.linkedinapi.client.oauth.LinkedInOAuthServiceFactory;
import com.google.code.linkedinapi.client.oauth.LinkedInRequestToken;

public class LITestActivity extends Activity {


    public static final String CONSUMER_KEY = "xx";
    public static final String CONSUMER_SECRET = "xx";
    private final static String APP_PNAME = "xx";


    public static final String APP_NAME = "xx;
    public static final String OAUTH_CALLBACK_SCHEME = "xx";
    public static final String OAUTH_CALLBACK_HOST = "xxx";
    public static final String OAUTH_CALLBACK_URL = OAUTH_CALLBACK_SCHEME
            + "://" + OAUTH_CALLBACK_HOST;

    final LinkedInOAuthService oAuthService = LinkedInOAuthServiceFactory
            .getInstance().createLinkedInOAuthService(CONSUMER_KEY,
                    CONSUMER_SECRET);
    final LinkedInApiClientFactory factory = LinkedInApiClientFactory
            .newInstance(CONSUMER_KEY, CONSUMER_SECRET);
    LinkedInRequestToken liToken;
    LinkedInApiClient client;

//  TextView tv = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    //  setContentView(R.layout.main);
    //  tv = (TextView) findViewById(R.id.tv);
        try
        {
        liToken = oAuthService.getOAuthRequestToken(OAUTH_CALLBACK_URL);
        Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(liToken
                .getAuthorizationUrl()));
        startActivity(i);
        }catch (Exception e) {
            Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_SHORT).show();

        }
    }

    @Override
    protected void onNewIntent(Intent intent) {
        String verifier = intent.getData().getQueryParameter("oauth_verifier");
        try{
        LinkedInAccessToken accessToken = oAuthService.getOAuthAccessToken(
                liToken, verifier);
        client = factory.createLinkedInApiClient(accessToken);
        String tweet = "Download Android App " + "market://details?id=" + APP_PNAME;
        client.postNetworkUpdate(tweet);
        //Person p = client.getProfileForCurrentUser();
        //tv.setText(p.getLastName() + ", " + p.getFirstName());
    //      p.setCurrentStatus("tweet");

        }catch (Exception e) {
            Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_SHORT).show();
        }
        finish();

    }
}

ライブラリは

linkedin-j-android.jar
signpost-jetty6-1.2.1.1.jar
signpost-core-1.2.1.1.jar
于 2012-08-03T15:28:29.987 に答える