我正在尝试从ParseFacebook获取用户的电子邮件地址,但是当我尝试获取电子邮件时,我将变为空。 这是我的代码
//on Login:
List<String> permissions = Arrays.asList("email","basic_info", "user_about_me", "user_location");
ParseFacebookUtils.logIn(permissions,SignUpActivity. this, new LogInCallback() {
@Override
public void done(ParseUser user, ParseException err) {
SignUpActivity.this.progressDialog.dismiss();
if(err!=null)
Log.w("parse exception",""+err.getMessage());
if (user == null) {
Log.e("FB","Uh oh. The user cancelled the Facebook login.");
} else if (user.isNew()) {
Log.w("FB","User signed up and logged in through Facebook!");
//showUserDetailsActivity();
getProfileInfo();
} else {
Log.w("FB","User logged in through Facebook!");
// showUserDetailsActivity();
getProfileInfo();
}
}
});
提出要求:
Request request = Request.newMeRequest(ParseFacebookUtils.getSession(),new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
if (user != null) {
JSONObject userProfile = new JSONObject();
try {
// Populate the JSON object
try {
userProfile.put("facebookId", user.getId());
userProfile.put("name", user.getName());
} catch (Exception e) {
// TODO: handle exception
}
if (user.getProperty("email") != null) {
userProfile.put("email",(String) user.getProperty("email"));
}
if (user.getLocation().getProperty("name") != null) {
userProfile.put("location", (String) user.getLocation().getProperty("name"));
}
if (user.getProperty("gender") != null) {
userProfile.put("gender",(String) user.getProperty("gender"));
}
} catch (JSONException e) {
Log.e("Facebook parsing data","Error parsing returned user data.");
}
} else if (response.getError() != null) {
if ((response.getError().getCategory() == FacebookRequestError.Category.AUTHENTICATION_RETRY) || (response.getError().getCategory() == FacebookRequestError.Category.AUTHENTICATION_REOPEN_SESSION)) {
Log.e("Facebook parsing data","The facebook session was invalidated.");
//onLogoutButtonClicked();
} else {
Log.e("Facebook parsing data","Some other error: "+ response.getError().getErrorMessage());
}
}
}
});
request.executeAsync();
我已经尝试了一切,但无论我做什么,我都收到电子邮件null :(
答案 0 :(得分:0)
在设置上述权限后,通过以下方式访问电子邮件:user.asMap()。get(&#34; email&#34;));
答案 1 :(得分:0)
你应该收到这样的电子邮件
String email = (String) response.getGraphObject().getProperty("email");
if(email!=null && !email.equals("")
//email variable should've email id.
答案 2 :(得分:0)
尝试删除登录呼叫中的权限列表。
ParseFacebookUtils.logIn(SignUpActivity.this, new LogInCallback() {
//you can add permissions on later screens.
}
答案 3 :(得分:0)
请将此请求添加到您:
__EVENTTARGET:
__EVENTARGUMENT:
__VIEWSTATE:/wEPDwULLTE3NDQ0MTE0OTgPZBYCZg9kFgICAQ8WAh4HVmlzaWJsZWgWAgIDDw9kFgIeB29ua2V5dXAFJnRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLnRvTG93ZXJDYXNlKCk7ZGSj5Ki6eeFgaBABR8RCqLZPLI/WZw==
__VIEWSTATEGENERATOR:B40748C4
__EVENTVALIDATION:/wEWAgKmuqaTBQKYxoa5CF+xFBuOB81vr2zAb/xD7VZ3+CQV
SearchBy:2
CaseSearchMode:CaseNumber
CaseSearchValue:
CitationSearchValue:
CourtCaseSearchValue:
PartySearchMode:Name
AttorneySearchMode:Name
LastName:Smith
FirstName:William
cboState:AA
MiddleName:
DateOfBirth:
DriverLicNum:
CaseStatusType:0
DateFiledOnAfter:
DateFiledOnBefore:
chkCriminal:on
chkFamily:on
chkCivil:on
chkProbate:on
chkDtRangeCriminal:on
chkDtRangeFamily:on
chkDtRangeCivil:on
chkDtRangeProbate:on
chkCriminalMagist:on
chkFamilyMagist:on
chkCivilMagist:on
chkProbateMagist:on
DateSettingOnAfter:
DateSettingOnBefore:
SortBy:fileddate
SearchSubmit:Search
SearchType:PARTY
SearchMode:NAME
NameTypeKy:ALIAS
BaseConnKy:AT
StatusType:true
ShowInactive:
AllStatusTypes:true
CaseCategories:
RequireFirstName:False
CaseTypeIDs:
HearingTypeIDs:
SearchParams:SearchBy~~Search By:~~Attorney~~Attorney||AttorneyNameOption~~Party Search Mode:~~Name~~Name||LastName~~Last Name:~~Smith~~Smith||FirstName~~First Name:~~William~~William||AllOption~~Case Status:~~0~~All||selectSortBy~~Sort By:~~Filed Date~~Filed Date
在登录请求条件中=&gt; user.isnew()
Request request = Request.newMeRequest(ParseFacebookUtils.getSession(),new Request.GraphUserCallback()
在这之间编写您的块,您也可以通过电子邮件获得新的用户信息。
这完全适用于iOS,肯定会有助于安卓。
答案 4 :(得分:0)
行前
request.executeAsync();
添加这三行。
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email");
request.setParameters(parameters);
现在,您将在回复中收到电子邮件