gpt4 book ai didi

android - 在android中获取Facebook用户详细信息

转载 作者:太空宇宙 更新时间:2023-11-03 13:27:08 25 4
gpt4 key购买 nike

我在 android 中开发了一个应用程序,我在其中从 Facebook 获取用户详细信息。我能够获取用户名、名字、姓氏,但电子邮件在某些 Facebook 帐户中为空。在某些 Facebook 帐户中,我发现了电子邮件 ID,而某些 Facebook 帐户电子邮件为空,为什么?

最佳答案

问题是电子邮件权限,这是获取电子邮件 ID 的工作代码。这是我这里给的 Unable to access facebook login?

  Session.openActiveSession(this, true, new Session.StatusCallback() {

// callback when session changes state
@Override
public void call(Session session, SessionState state,
Exception exception) {
if (session.isOpened()) {
// make request to the /me API

List<String> permissions = session.getPermissions();
if (!isSubsetOf(PERMISSIONS, permissions)) {
pendingPublishReauthorization = true;
Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(
RegisterActivity.this, PERMISSIONS);
session.requestNewReadPermissions(newPermissionsRequest);
return;
}
Request.executeMeRequestAsync(session,
new Request.GraphUserCallback() {

// callback after Graph API response with
// user object
@Override
public void onCompleted(GraphUser user,
Response response) {
if (user == null) {
Toast.makeText(
RegisterActivity.this
.getApplicationContext(),
"Facebook Error",
Toast.LENGTH_LONG).show();

} else {
Toast.makeText(
RegisterActivity.this
.getApplicationContext(),
user.getName()
+ " Logged in Successfully.",
Toast.LENGTH_LONG).show();
GraphUser abc = user;

id = user.getId();
name = user.getName();
gender = user.getProperty("gender")
.toString();
editname.setText(name);
username.setText(user.getUsername());
JSONObject jo = user
.getInnerJSONObject();
Log.d("Details", jo.toString());
try {
emailid.setText(user
.getProperty("email")
.toString());
} catch (Exception e1) {
// TODO Auto-generated catch
// block
e1.printStackTrace();
}

try {
location = user.getLocation()
.getProperty("name")
.toString();
} catch (Exception e) {

e.printStackTrace();
}



}

return;
}

});

}
}
});

放置onActivityResult方法

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode,
resultCode, data);
}

isSubsetoff() 方法

   private boolean isSubsetOf(Collection<String> subset,
Collection<String> superset) {
for (String string : subset) {
if (!superset.contains(string)) {
return false;
}
}
return true;
}

权限根据您的需要

  private static final List<String> PERMISSIONS = Arrays.asList("email",
"user_about_me", "user_location");

关于android - 在android中获取Facebook用户详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17848764/

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