如何使用Facebook SDK Android获取Facebook照片,全名,性别

军械库:

我正在开发一个Android应用程序,在该应用程序中,任何使用我们的应用程序登录Facebook的Android用户都需要从Facebook中提取其照片,性别和全名。我为此使用Facebook SDK。

借助Facebook SDK,我可以登录Facebook,但不确定如何从Facebook中提取他的照片,性别和全名?

以下是我用来登录Facebook的代码。我遵循了本教程

public class SessionLoginFragment extends Fragment {

    private static final String URL_PREFIX_FRIENDS = "https://graph.facebook.com/me/friends?access_token=";

    private TextView textInstructionsOrLink;
    private Button buttonLoginLogout;
    private Session.StatusCallback statusCallback = new SessionStatusCallback();

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

    buttonLoginLogout = (Button) view.findViewById(R.id.buttonLoginLogout);
    textInstructionsOrLink = (TextView) view.findViewById(R.id.instructionsOrLink);

    Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);

    Session session = Session.getActiveSession();
    if (session == null) {
        if (savedInstanceState != null) {
        session = Session.restoreSession(getActivity(), null, statusCallback,
            savedInstanceState);
        }
        if (session == null) {
        session = new Session(getActivity());
        }
        Session.setActiveSession(session);
        if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
        session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback));
        }
    }

    updateView();

    return view;
    }

    @Override
    public void onStart() {
    super.onStart();
    Session.getActiveSession().addCallback(statusCallback);
    }

    @Override
    public void onStop() {
    super.onStop();
    Session.getActiveSession().removeCallback(statusCallback);
    }

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

    @Override
    public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    Session session = Session.getActiveSession();
    Session.saveSession(session, outState);
    }

    private void updateView() {
    Session session = Session.getActiveSession();
    if (session.isOpened()) {
        Log.d("Hello", URL_PREFIX_FRIENDS + session.getAccessToken());
        Intent i = new Intent(getActivity(), ThesisProjectAndroid.class);
        startActivity(i);

    } else {
        Log.d("Hello", "Login Failed");
        textInstructionsOrLink.setText(R.string.instructions);
        buttonLoginLogout.setText(R.string.login);
        buttonLoginLogout.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            onClickLogin();
        }
        });
    }
    }

    private void onClickLogin() {
    Session session = Session.getActiveSession();
    if (!session.isOpened() && !session.isClosed()) {
        session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback));
    } else {
        Session.openActiveSession(getActivity(), this, true, statusCallback);
    }
    }

    private void onClickLogout() {
    Session session = Session.getActiveSession();
    if (!session.isClosed()) {
        session.closeAndClearTokenInformation();
    }
    }

    private class SessionStatusCallback implements Session.StatusCallback {
    @Override
    public void call(Session session, SessionState state, Exception exception) {
        updateView();
    }
    }
}

谁能告诉我在上一课中我需要进行哪些更改才能获得我需要的所有三个信息。据我所知,如果我能够获得该人的Facebook唯一ID,我就能获得我猜到的所有信息。有什么想法吗?

chrisbjr:

StatusCallback函数中,您可以从GraphUser对象获取详细信息

private class SessionStatusCallback implements Session.StatusCallback {
    private String fbAccessToken;

    @Override
    public void call(Session session, SessionState state, Exception exception) {
        updateView();
        if (session.isOpened()) {
            fbAccessToken = session.getAccessToken();
            // make request to get facebook user info
            Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
                @Override
                public void onCompleted(GraphUser user, Response response) {
                    Log.i("fb", "fb user: "+ user.toString());

                    String fbId = user.getId();
                    String fbAccessToken = fbAccessToken;
                    String fbName = user.getName();
                    String gender = user.asMap().get("gender").toString();
                    String email = user.asMap().get("email").toString();

                    Log.i("fb", userProfile.getEmail());
                }
            });
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Android Facebook SDK从Facebook获取朋友列表?

如何使用Facebook Android SDK 3.8获取Facebook访问令牌?

适用于Android的Facebook SDK:如何获取用户的性别

Python Facebook SDK 获取我自己的照片

如何从Facebook获取emailid使用facebook sdk版本3.22.0登录

如何使用Facebook SDK Xamarin Android登录?

如何获取用户信息。使用Android Facebook SDK?

在Facebook SDK中获取invitable_friends的性别

如何使用Xamarin.iOS Facebook SDK共享Facebook页面?

如何使用.NET的Facebook SDK获得Facebook封闭组帖子

如何使用Facebook SDK保存从fbprofilepictureview获取的用户图像

如何使用Facebook PHP SDK获取图片网址

有谁知道如何从 android 平台的 facebook sdk 获取名字、姓氏、电子邮件、id、生日、性别、家乡、年龄等?

Android Studio 0.8.1-如何使用Facebook SDK?

如何使用Facebook SDK的Open Graph喜欢Android中的Url

如何在Android中使用SDK 4.1.0登录Facebook?

如何使用SDK 3.0在Android中存储Facebook的登录状态

如何使用Facebook-PHP-SDK从Facebook获取个人资料信息

Android-如何使用Facebook SDK 4获取用户电子邮件

如何使用Android版Facebook SDK v4.2获取用户详细信息

如何从Android Facebook SDK 4.6.0获取电子邮件ID?

如何获取发布哈希键Facebook Android SDK

如何使用Facebook Android SDK 4.x将视频上传到Facebook?

如何在Android中使用Facebook SDK在Facebook中发布消息?

如何从Facebook iOS SDK获取朋友列表

Android Facebook页面照片获取

如何从Android中的Facebook获取用户性别和生日

注销Facebook Android SDK

Android + Facebook SDK