如何获取LinkedIn个人资料信息,然后默认信息Android
问题描述:
我得到用户的默认信息,如名字和姓氏一个URL(网站标准的网址),但我想访问User_id和smilar信息。我遵循“https://developer.linkedin.com/documents/profile-api”并执行如下代码。 请帮帮我。我打了很多东西,但无法取得成功。如何获取LinkedIn个人资料信息,然后默认信息Android
public class LinkedInTestActivity extends Activity {
public static final String CONSUMER_KEY = "XXXXXXXXXXXXXXXX";
public static final String CONSUMER_SECRET = "XXXXXXXXXXXXXXXX";`enter code here`
LinkedInAccessToken accessToken;
public static final String APP_NAME = "LITest";
public static final String OAUTH_CALLBACK_SCHEME = "x-oauthflow-linkedin";
public static final String OAUTH_CALLBACK_HOST = "callback";
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);
liToken = oAuthService.getOAuthRequestToken(OAUTH_CALLBACK_URL);
Log.e("liToken.getAuthorizationUrl()",""+liToken.getAuthorizationUrl());
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(liToken.getAuthorizationUrl()));
startActivity(i);
}
@Override
protected void onNewIntent(Intent intent) {
String verifier = intent.getData().getQueryParameter("oauth_verifier");
Log.e("Verifier-------->",""+verifier);
Log.e("liToken-------->",""+liToken);
accessToken = oAuthService.getOAuthAccessToken(liToken, verifier);
Log.e("accessToken-------->",""+accessToken.getToken());
client = factory.createLinkedInApiClient(accessToken);
client.postNetworkUpdate("LinkedIn Android app test");
// Person p = client.getProfileByUrl("http://api.linkedin.com/v1/people/~", ProfileType.STANDARD);
Person p =client.getProfileForCurrentUser();
p.getDateOfBirth();
p.getApiStandardProfileRequest();
p.getSiteStandardProfileRequest().getUrl();
p.getHeadline();
tv.setText(p.getLastName() + ", " + p.getFirstName()+ " DOB "+ p.getDateOfBirth());
if (accessToken == null) {
throw new IllegalArgumentException("access token cannot be null.");
}
try {
URL url = new URL(LinkedInApiUrls.GET_CONNECTIONS_FOR_CURRENT_USER);
HttpURLConnection request = (HttpURLConnection) url.openConnection();
final OAuthConsumer consumer = getOAuthConsumer();
consumer.setTokenWithSecret(accessToken.getToken(), accessToken.getTokenSecret());
consumer.sign(request);
request.connect();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost post = new HttpPost("http://api.linkedin.com/v1/people/~:(id,first-name,last-name,industry,headline,public-profile-url)");
consumer.sign(post); // here need the consumer for sign in for post the share
org.apache.http.HttpResponse response = httpclient.execute(post);
Log.e("response",""+response.getHeaders(verifier).toString());
}
protected OAuthConsumer getOAuthConsumer() {
DefaultOAuthConsumer consumer = new DefaultOAuthConsumer(CONSUMER
_KEY, CONSUMER_SECRET);
consumer.setMessageSigner(new HmacSha1MessageSigner());
consumer.setSigningStrategy(new AuthorizationHeaderSigningStrategy());
return consumer;
}
}
答
为了得到更多用户的详细信息Person对象应使用如下,
请更换此,
Person p =client.getProfileForCurrentUser();
用,
Person profile = client.getProfileForCurrentUser(EnumSet.of(
ProfileField.ID, ProfileField.FIRST_NAME,
ProfileField.LAST_NAME, ProfileField.HEADLINE,
ProfileField.INDUSTRY, ProfileField.PICTURE_URL,
ProfileField.DATE_OF_BIRTH, ProfileField.LOCATION_NAME,
ProfileField.MAIN_ADDRESS, ProfileField.LOCATION_COUNTRY));
就这样你可以得到更详细的信息。使用此配置对象,
System.out.println("PersonID : " + profile.getId());
System.out.println("Name : " + profile.getFirstName() + " "
+ profile.getLastName());
System.out.println("Headline : " + profile.getHeadline());
System.out.println("Industry : " + profile.getIndustry());
System.out.println("Picture : " + profile.getPictureUrl());
DateOfBirth dateOfBirth = profile.getDateOfBirth();
System.out.println("DateOfBirth : " + dateOfBirth.getDay() + "/"
+ dateOfBirth.getMonth() + "/" + dateOfBirth.getYear());
System.out.println("MAin Address : " + profile.getMainAddress());
Location location = profile.getLocation();
System.out.println("Location:" + location.getName() + " - "
+ location.getCountry().getCode());
+1
如果我想获得电子邮件地址,那么我会做什么? – duggu 2013-05-23 07:20:53
答
我打了使用这种方法的URL和它的作品对我来说: -
private OAuthConsumer getConsumer() {
OAuthConsumer consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
consumer.setTokenWithSecret(accessToken.getToken(), accessToken.getTokenSecret());
return consumer;
}
}
这个问题有这么多的代码。你应该只有你的问题的相关部分。不要放这么多,它刺激读者。阅读常见问题 – Siddharth 2012-12-07 07:12:41