gpt4 book ai didi

android - 没有从 linkedin 获取电子邮件地址?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:54:27 26 4
gpt4 key购买 nike

我正在尝试在身份验证后从 linkedin 用户获取电子邮件地址,现在我正在获取基本配置文件但没有获取电子邮件地址。

我正在使用 http://code.google.com/p/linkedin-j/downloads/list用于身份验证的 jar 文件。

我已经仔细阅读了这份文件,但对我来说还没有完全使用http://oodlestechnologies.com/blogs/recent-changes-in-linkedin-api .

jar 文件属性的代码如下:-

# API URLs
##########
# Profile API
com.google.code.linkedinapi.client.getProfileForCurrentUser=http://api.linkedin.com/v1/people/~{profileFields}
com.google.code.linkedinapi.client.getProfileById=http://api.linkedin.com/v1/people/id={id}{profileType}{profileFields}
com.google.code.linkedinapi.client.getProfileByUrl=http://api.linkedin.com/v1/people/url={url}{profileType}{profileFields}

#OAuth URLs
###########
com.google.code.linkedinapi.client.oauth.requestToken=https://api.linkedin.com/uas/oauth/requestToken
com.google.code.linkedinapi.client.oauth.accessToken=https://api.linkedin.com/uas/oauth/accessToken
com.google.code.linkedinapi.client.oauth.authorize=https://www.linkedin.com/uas/oauth/authorize
com.google.code.linkedinapi.client.oauth.invalidateToken=https://api.linkedin.com/uas/oauth/invalidateToken

当我更改上面的任何内容并创建 jar 时,它会显示错误。

现在我展示了我的代码:-

void startAutheniticate() {

System.out.println("OAUTH_CALLBACK_URL " + OAUTH_CALLBACK_URL);

final LinkedInRequestToken liToken = oAuthService
.getOAuthRequestToken(OAUTH_CALLBACK_URL);
final String uri = liToken.getAuthorizationUrl();
getSharedPreferences(OAUTH_PREF, MODE_PRIVATE).edit()
.putString(PREF_REQTOKENSECRET, liToken.getTokenSecret())
.commit();


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


void finishAuthenticate(final Uri uri) {
if (uri != null && uri.getScheme().equals(OAUTH_CALLBACK_SCHEME)) {
final String problem = uri.getQueryParameter(OAUTH_QUERY_PROBLEM);
if (problem == null) {
final SharedPreferences pref = getSharedPreferences(OAUTH_PREF,
MODE_PRIVATE);
final LinkedInAccessToken accessToken = oAuthService
.getOAuthAccessToken(
new LinkedInRequestToken(uri
.getQueryParameter(OAUTH_QUERY_TOKEN),
pref.getString(PREF_REQTOKENSECRET,
null)),
uri.getQueryParameter(OAUTH_QUERY_VERIFIER));
pref.edit()
.putString(PREF_TOKEN, accessToken.getToken())
.putString(PREF_TOKENSECRET,
accessToken.getTokenSecret())
.remove(PREF_REQTOKENSECRET).commit();
showCurrentUser(accessToken);
} else {
Toast.makeText(this,
"Appliaction down due OAuth problem: " + problem,
Toast.LENGTH_LONG).show();
finish();
}

}
}


void clearTokens() {
getSharedPreferences(OAUTH_PREF, MODE_PRIVATE).edit()
.remove(PREF_TOKEN).remove(PREF_TOKENSECRET)
.remove(PREF_REQTOKENSECRET).commit();
}

void showCurrentUser(final LinkedInAccessToken accessToken) {

final LinkedInApiClient client = factory
.createLinkedInApiClient(accessToken);
try {

final 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
));

// /////////////////////////////////////////////////////////
// here you can do client API calls ...
// client.postComment(arg0, arg1);
// client.updateCurrentStatus(arg0);
// or any other API call (this sample only check for current user
// and shows it in TextView)
// /////////////////////////////////////////////////////////


System.out.println("p => " + profile);
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());
// get_from_last


Toast.makeText(LITestActivity.this, "Wait...", Toast.LENGTH_LONG).show();



startActivity(new Intent(LITestActivity.this,
UserProfileScreen.class)
.putExtra("get_from_last", "1")
.putExtra("getId", profile.getId())
.putExtra("getEmail", "email@add.com")
.putExtra("getFirstName", profile.getFirstName())
.putExtra("getLastName", profile.getLastName())
.putExtra("getHeadline", profile.getHeadline())
.putExtra("getPictureUrl", profile.getPictureUrl())
.putExtra(
"dob",
dateOfBirth.getDay() + "/" + dateOfBirth.getMonth()
+ "/" + dateOfBirth.getYear()));

finish();
} catch (LinkedInApiClientException ex) {
clearTokens();
Toast.makeText(
this,
"Appliaction down due LinkedInApiClientException: "
+ ex.getMessage()
+ " Authokens cleared - try run application again.",
Toast.LENGTH_LONG).show();
pd.dismiss();
finish();
}

}

int i = 0;

public void onNewIntent(Uri intent) {

if (i == 0) {
i++;
finishAuthenticate(intent);
} else {
i++;
}
System.out.println("i => " + i);
}

但我不知道如何获取电子邮件地址所以任何人都可以帮助我

最佳答案

尽管这是一个老问题,但我认为它值得回答。我努力寻找一种方法来使用 linkedin-j-android 库从 linkedin 获取用户电子邮件地址。不幸的是我找不到任何现成的解决方案,所以我对库源进行了更改并将其重新打包以在我的应用程序中使用。您可以从此链接下载该库: https://dl.dropboxusercontent.com/u/46373731/linkedin-j-android.jar

您可以使用 ProfileField.EMAIL_ADDRESS 获取电子邮件地址。

关于android - 没有从 linkedin 获取电子邮件地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16710194/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com