使用 SDK 4.0 在 android 中成功登录 facebook 后我需要用户的电子邮件地址 [英] I need user's email address after successful facebook login in android using SDK 4.0

查看:18
本文介绍了使用 SDK 4.0 在 android 中成功登录 facebook 后我需要用户的电子邮件地址的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经集成了最新的 Facebook android sdk 4.0.在 SDK 3.0+ 中,用户的电子邮件地址在成功登录后使用 user.getProperty("email") 检索.我正在 Facebook Android sdk 4.0 中寻找相应的命令参考链接:

I have integrated latest Facebook android sdk 4.0. In SDK 3.0+ user's email address is retreived using user.getProperty("email") after successful login. I am looking for corresponding command in Facebook Android sdk 4.0 Reference Links:

https://developers.facebook.com/docs/facebook-login/android/v2.3#overviewhttps://developers.facebook.com/docs/android/upgrading-4.x

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(getActivity().getApplicationContext());
    callbackManager = CallbackManager.Factory.create();
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    loginButton = (LoginButton) view.findViewById(R.id.login_button);
    loginButton.setReadPermissions("email", "user_likes", "user_friends");
    loginButton.setFragment(this);
    setFacebookLoginText(loginButton);
    // Other app specific specialization

    // Callback registration
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            AccessToken accessToken = loginResult.getAccessToken();
            GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
                @Override
                public void onCompleted(JSONObject user, GraphResponse graphResponse) {

                  //Need User email address after login success.

                }
            }).executeAsync();
        }

        @Override
        public void onCancel() {
            Toast.makeText(getActivity(), "fail", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onError(FacebookException exception) {
            Toast.makeText(getActivity(), "error", Toast.LENGTH_SHORT).show();
        }
    });

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_facebook_login, container, false);
    return view;
}


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

推荐答案

是的,它成功了.只需在 FacebookCallBackonSuccess 方法中将 GraphRequest 更改为 GraphRequestAsyncTask,然后用户的详细信息就可以轻松完成从 JSONObject 中获取.

Yeah, it worked. The only thing required was to change GraphRequest to GraphRequestAsyncTask in onSuccess method of FacebookCallBack, and then user details could easily be fetched from the JSONObject.

        @Override
        public void onSuccess(LoginResult loginResult) {
            final AccessToken accessToken = loginResult.getAccessToken();
            final FBUser fbUser = new FBUser();
            GraphRequestAsyncTask request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
                @Override
                public void onCompleted(JSONObject user, GraphResponse graphResponse) {
                    fbUser.setEmail(user.optString("email"));
                    fbUser.setName(user.optString("name"));
                    fbUser.setId(user.optString("id"));
                }
            }).executeAsync();
        }

FBUser 模型类

public class FBUser {
private String displayName;
private String email;

public FBUser(String displayName, String email) {
    this.displayName= displayName;
    this.email = email;
}

public FBUser() {

}

public String getName() {
    return displayName;
}

public void setName(String displayName) {
    this.displayName = displayName;
}


public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

}

这篇关于使用 SDK 4.0 在 android 中成功登录 facebook 后我需要用户的电子邮件地址的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆