如何在android应用程序中从facebook sdk获取电子邮件id?
我在android应用程序中集成了Facebook登录。我想获取登录用户的电子邮件id。我怎样才能得到它如何在android应用程序中从facebook sdk获取电子邮件id?,android,facebook-graph-api,Android,Facebook Graph Api,我在android应用程序中集成了Facebook登录。我想获取登录用户的电子邮件id。我怎样才能得到它 private void loginToFacebook() { Session.openActiveSession(this, true, new Session.StatusCallback() { @Override public void call(Session session, SessionState state, Exception
private void loginToFacebook() {
Session.openActiveSession(this, true, new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
if (session.isOpened()) {
Log.i(TAG, "Access Token" + session.getAccessToken());
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
if (user != null) {
try {
userID =user.getId();
provider="facebook";
userName=user.getUsername();
firstName=user.getFirstName();
lastName=user.getLastName();
Log.d("****User****", "details:" + user);
}catch(Exception e){
这是我的密码。我使用了
Request.GraphUserCallback()
方法,但该方法没有响应电子邮件。试试这篇文章。希望你的问题能得到解决
顺便说一句,您需要使用user.asMap().get(“email”).toString()代码>用于接收用户电子邮件ID。
此外,您需要将其分配到一些标签中,如lblEmail.setText
,其中lblEmail是一个文本视图。在调用Session.openActiveSession
之前,执行以下操作以获得权限添加以下内容:
List<String> permissions = new ArrayList<String>();
permissions.add("email");
将此方法添加到活动中:
private static Session openActiveSession(Activity activity, boolean allowLoginUI, Session.StatusCallback callback, List<String> permissions) {
Session.OpenRequest openRequest = new Session.OpenRequest(activity).setPermissions(permissions).setCallback(callback);
Session session = new Session.Builder(activity).build();
if (SessionState.CREATED_TOKEN_LOADED.equals(session.getState()) || allowLoginUI) {
Session.setActiveSession(session);
session.openForRead(openRequest);
return session;
}
return null;
}
private静态会话openActiveSession(活动活动、布尔allowLoginUI、Session.StatusCallback回调、列表权限){
Session.OpenRequest OpenRequest=新建Session.OpenRequest(活动).setPermissions(权限).setCallback(回调);
Session Session=新建Session.Builder(activity.build();
if(SessionState.CREATED_TOKEN_LOADED.equals(session.getState())| | allowLoginUI){
Session.setActiveSession(Session);
openForRead(openRequest);
返回会议;
}
返回null;
}
根据Egor N的建议,我更改了我的旧代码
Session.openActiveSession(this, true, statusCallback);
这个新的:
List<String> permissions = new ArrayList<String>();
permissions.add("email");
Session.openActiveSession(this, true, permissions, statusCallback);
List permissions=new ArrayList();
权限。添加(“电子邮件”);
openActiveSession(this,true,permissions,statusCallback);
现在FB询问用户关于电子邮件的权限,我可以在回复中阅读它 我用了简单的安卓按钮。那我怎么才能把许可放在那里。现在我只需要在那里输入电子邮件的权限。但我如何才能将权限和位置放置?@user2541633loginbuttonauthbutton=(LoginButton)findViewById(R.id.authButton);authButton.setOneErrorListener(新的OneErrorListener(){authButton.setReadPermissions(Arrays.asList(“基本信息”、“电子邮件”))
这个东西在emulator上运行,但当我在手机上安装我的应用程序时,它直接指向facebook android应用程序,但没有给我任何响应显示您的代码和导致NullPointerException的确切行,以便我们可以为您提供。方法openActiveSession(Activity,boolean,Session.StatusCallback)类型中的Session不适用于参数(Login,boolean,new Session.StatusCallback(){},List)。这是eclipseit中显示的错误,它仍然给我相同的错误。删除参数说明资源路径位置类型方法openActiveSession(Activity,boolean,Session.StatusCallback)在类型中,Session不适用于参数(Login、boolean、new Session.StatusCallback(){}、List)Oops,my bad,请再次查看我的答案。注意,executeMeRequestAsync()现在已被弃用,但Session.openActiveSession()方法允许将权限包含为参数。
List<String> permissions = new ArrayList<String>();
permissions.add("email");
Session.openActiveSession(this, true, permissions, statusCallback);