前提,已经在linked in上创建app,已有appkey啥的,需要jar文件:linkedin-j-android.jar,signpost-core-1.2.1.1.jar,commons-codec-1.3.jar,scribe.jar
private void requestGetLinkedServer() {
Thread tokenRequest = new Thread(new Runnable() {
public void run() {
OAuthService mService = new ServiceBuilder().provider(LinkedInApi.class).
apiKey(Constant.CONSUMER_KEY)
.apiSecret(Constant.CONSUMER_SECRET)
.callback(Constant.OAUTH_CALLBACK_HOST).scope("r_basicprofile")
.scope("rw_nus").build();
mRequestToken = mService.getRequestToken();
authUrl = mService.getAuthorizationUrl(mRequestToken);
Message msg = new Message();
handle.sendMessage(msg);
}
});
tokenRequest.start();
}
Handler handle=new Handler(){
@Override
public void handleMessage(Message msg) {
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
super.shouldOverrideUrlLoading(view, url);
if (url.startsWith("oauth")) {
mWebView.setVisibility(WebView.GONE);
final String url1 = url;
Thread t1 = new Thread() {
public void run() {
Uri uri = Uri.parse(url1);
String verifier = uri
.getQueryParameter("oauth_verifier");
Verifier v = new Verifier(verifier);
Token accessToken = mService.getAccessToken(
mRequestToken, v);
SharedPreferences.Editor editor = mprefs.edit();
editor.putString("linkedin_access_token", accessToken.getToken());
editor.putString("linkedin_access_secret", accessToken.getSecret());
editor.putString("linkedin_token_save_time",String.valueOf(new Date().getTime()));
editor.commit();
Intent intent = new Intent();
intent.putExtra("access_token",
accessToken.getToken());
intent.putExtra("access_secret",
accessToken.getSecret());
setResult(RESULT_OK, intent);
finish();
}
};
t1.start();
}
return false;
}
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
stopLoading();
}
});
mWebView.loadUrl(authUrl);
}
};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == 200) {
String access_token = data.getStringExtra("access_token");
String access_secret = data.getStringExtra("access_secret");
SharedPreferences.Editor editor = mprefs.edit();
editor.putString("linkedin_access_token", access_token);
editor.putString("linkedin_access_secret", access_secret);
editor.putString("linkedin_token_save_time",String.valueOf(new Date().getTime()));
editor.commit();
}
}
以上是授权
以下是分享
private void requestGetLinkedServer() {
Thread shareRequest = new Thread(new Runnable() {
public void run() {
String url = "http://api.linkedin.com/v1/people/~/shares";
OAuthRequest request = new OAuthRequest(Verb.POST, url);
request.addHeader("Content-Type", "text/xml");
mService = new ServiceBuilder()
.provider(LinkedInApi.class).apiKey(Constant.CONSUMER_KEY)
.apiSecret(Constant.CONSUMER_SECRET)
.callback(Constant.OAUTH_CALLBACK_HOST).scope("r_basicprofile")
.scope("rw_nus").build();
Token token = new Token(userToken, userScreet);
Document doc = DocumentHelper.createDocument();
Element share = doc.addElement("share");
share.addElement("comment").addText("Posting from the API using XML");
Element content = share.addElement("content");
content.addElement("title").addText("A title for your share");
content.addElement("submitted-url").addText("http://www.mymobiletext.com");
// content.addElement("submitted-image-url").addText("http://img5.imgtn.bdimg.com/it/u=1420555931,1374476310&fm=21&gp=0.jpg");
share.addElement("visibility").addElement("code").addText("anyone");
request.addPayload(doc.asXML());
mService.signRequest(token, request);
Response response = request.send();
Message msg = new Message();
String reStr = response.getBody();
try {
Document docCode = DocumentHelper.parseText(reStr);
Element root = docCode.getRootElement();
String text = root.getName();
if(text.equals("error")){
successHandle.sendMessage(msg);
}else{
handle.sendMessage(msg);
}
} catch (DocumentException e) {
e.printStackTrace();
}
System.out.println(response.getBody());
System.out.println(response.getHeaders().toString());
}
});
shareRequest.start();
}
Handler successHandle=new Handler(){
@SuppressLint("ShowToast")
@Override
public void handleMessage(Message msg) {
Toast.makeText(getApplicationContext(), "发布成功", 3000);
}
};
share_linkedin_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<android.webkit.WebView android:id="@+id/linkedin_webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</android.webkit.WebView>
</LinearLayout>