从Facebook检索用户名和电子邮件ID到我的Android应用程序中

用户名

我正在尝试从Facebook帐户中获取用户详细信息,例如用户名和电子邮件ID,这些用户通过Facebook登录到我的Android应用程序...首先,我创建了一个代码,用户可以在其中通过Facebook登录到我的应用程序...该代码我在下面给出了...它工作正常....但是我必须要做的是从Facebook获取用户详细信息

MainActivity.java

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.view.MenuItem;


public class MainActivity extends FragmentActivity {
private MainFragment mainFragment;




@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



    if (savedInstanceState == null) {
        // Add the fragment on initial activity setup
        mainFragment = new MainFragment();
                 getSupportFragmentManager().beginTransaction().add(android.R.id.content,   mainFragment).commit();
    } else {
        // Or set the fragment from restored state info
        mainFragment = (MainFragment)   getSupportFragmentManager().findFragmentById(android.R.id.content);
    }

}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;

}



@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}


}

MainFragment.java

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.facebook.Session;
import com.facebook.SessionState;
import com.facebook.UiLifecycleHelper;
import com.facebook.widget.LoginButton;


public class MainFragment extends Fragment {
private static final String TAG = "MainFragment";
private UiLifecycleHelper uiHelper;
private LoginButton authButton;

private Session.StatusCallback callback = new Session.StatusCallback() {
    @Override
    public void call(Session session, SessionState state, Exception              exception) {
        onSessionStateChange(session, state, exception);
    }
};

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


    return view;
}


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
   uiHelper = new UiLifecycleHelper(getActivity(),callback);
    uiHelper.onCreate(savedInstanceState);
}

@Override
public void onResume() {
    super.onResume();
    Session session = Session.getActiveSession();
    if (session != null &&
            (session.isOpened() || session.isClosed()) ) {
        onSessionStateChange(session, session.getState(), null);
    }
    uiHelper.onResume();
}

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

@Override
public void onPause() {
    super.onPause();
    uiHelper.onPause();
}

@Override
public void onDestroy() {
    super.onDestroy();
    uiHelper.onDestroy();
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    uiHelper.onSaveInstanceState(outState);
}
private void onSessionStateChange(Session session, SessionState state,   Exception exception) {
    if (state.isOpened()) {
        Log.i(TAG, "Logged in...");
       // startActivity(new Intent(getActivity(),     ContentSliderActivity.class));
    } else if (state.isClosed()) {
        Log.i(TAG, "Logged out...");
    }
}

}

用户名

要首先从facebook获取用户详细信息,将需要用户的public_profile权限,一旦用户允许,您就可以获取它

要获取用户详细信息,您可以使用下面的方法。一旦使用用户权限成功登录会话后,该会话有效,则可以使用该会话获取用户详细信息。

private void getUserDetails(final Session session) {
        Request request = Request.newMeRequest(session,
                new Request.GraphUserCallback() {
                    @Override
                    public void onCompleted(GraphUser user, Response response) {
                        if (session == Session.getActiveSession()) {
                            if (user != null) {
                                String id = user.getId();
                                String firstName = user.getFirstName();
                                String lastName = user.getLastName();
                                String name = user.getName();
//**Here you can get details of the user. show toast or display from here
                            }
                        }
                        if (response.getError() != null) {
                            Log.e("ERROR", response.getError()
                                    .getErrorMessage());
                        }
                    }
                });
        request.executeAsync();
    }

您的片段在哪里申请?onSessionStateChange的方法MainFragment

private void onSessionStateChange(Session session, SessionState state,
            Exception exception) {
        if (state.isOpened()) {
            Log.i(TAG, "Logged in...");
            // Call getUserDetails if session is valid and user successfully
            // logged in
            getUserDetails(session);
        } else if (state.isClosed()) {
            Log.i(TAG, "Logged out...");
        }
    }

主片段

public class MainFragment extends Fragment {
    private static final String TAG = "MainFragment";
    private UiLifecycleHelper uiHelper;
    private LoginButton authButton;

    private Session.StatusCallback callback = new Session.StatusCallback() {
        @Override
        public void call(Session session, SessionState state,
                Exception exception) {
            onSessionStateChange(session, state, exception);
        }
    };

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

        return view;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        uiHelper = new UiLifecycleHelper(getActivity(), callback);
        uiHelper.onCreate(savedInstanceState);
    }

    @Override
    public void onResume() {
        super.onResume();
        Session session = Session.getActiveSession();
        if (session != null && (session.isOpened() || session.isClosed())) {
            onSessionStateChange(session, session.getState(), null);
        }
        uiHelper.onResume();
    }

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

    @Override
    public void onPause() {
        super.onPause();
        uiHelper.onPause();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        uiHelper.onDestroy();
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        uiHelper.onSaveInstanceState(outState);
    }

    private void onSessionStateChange(Session session, SessionState state,
            Exception exception) {
        if (state.isOpened()) {
            Log.i(TAG, "Logged in...");
            // Call getUserDetails if session is valid and user successfully
            // logged in
            getUserDetails(session);
        } else if (state.isClosed()) {
            Log.i(TAG, "Logged out...");
        }
    }

    private void getUserDetails(final Session session) {
        Request request = Request.newMeRequest(session,
                new Request.GraphUserCallback() {
                    @Override
                    public void onCompleted(GraphUser user, Response response) {
                        if (session == Session.getActiveSession()) {
                            if (user != null) {
                                String id = user.getId();
                                String firstName = user.getFirstName();
                                String lastName = user.getLastName();
                                String name = user.getName();
                                Toast.makeText(
                                        getActivity(),
                                        "Name : " + name + " ID  : " + id
                                                + " First name : " + firstName
                                                + " Last Name : " + lastName,
                                        Toast.LENGTH_LONG).show();

                            }
                        }
                        if (response.getError() != null) {
                            Log.e("ERROR", response.getError()
                                    .getErrorMessage());
                        }
                    }
                });
        request.executeAsync();
    }

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从他的电子邮件ID中检索用户Outlook显示名称(即用户名)

来自分类Dev

多租户应用程序的身份,允许重复的电子邮件或用户名

来自分类Dev

多租户应用程序的身份,允许重复的电子邮件或用户名

来自分类Dev

如何获取Facebook SDK的用户名和电子邮件ID?

来自分类Dev

从android应用程序版本4.4中获取Facebook朋友信息,例如电子邮件ID和电话号码

来自分类Dev

如何从Android应用程序中的Facebook SDK获取电子邮件ID?

来自分类Dev

解析Android中的登录用户名和电子邮件

来自分类Dev

超过了 Google Apps 脚本中从电子邮件域检索用户名和电子邮件地址的最长执行时间

来自分类Dev

如何检测用户是否已通过Firebase和Facebook,电子邮件或Google通过Swift使用我的应用程序登录了我的应用程序

来自分类Dev

从UserCreationForm中删除用户名,并根据电子邮件,名字和姓氏自动为用户生成用户名

来自分类Dev

我可以从Playstore知道已安装我的应用程序的用户的电子邮件ID吗

来自分类Dev

从Android应用程序获取已登录用户的Facebook电子邮件

来自分类Dev

用户名和电子邮件的Rails验证

来自分类Dev

REST API 的用户名和电子邮件检查

来自分类Dev

用户名和电子邮件验证

来自分类Dev

UIsearchbar 搜索电子邮件和用户名

来自分类Dev

如何在git中更新全局配置(用户名和用户电子邮件)?

来自分类Dev

如何允许用户使用php中的用户名和电子邮件登录?

来自分类Dev

如何在没有任何电子邮件/用户名的情况下将我的电子邮件/用户名添加到旧提交中?

来自分类Dev

SourceTree如何加载我的帐户用户名和电子邮件(来自bitbucket,github)?

来自分类Dev

想要发送电子邮件ID和用户名以及密码

来自分类Dev

从Phabricator中的用户名获取电子邮件

来自分类Dev

在激活电子邮件中交流用户名

来自分类Dev

Crashlytics:如何查看崩溃详细信息中的用户名/电子邮件/ ID?

来自分类Dev

如何从iOS应用程序中获取HockeyApp用户的电子邮件/ ID?

来自分类Dev

电子邮件和用户名验证在yii2中不起作用

来自分类Dev

如何在Java中解码访问令牌并获取用户名和电子邮件?

来自分类Dev

如何停止在php中存储现有的用户名和电子邮件?

来自分类Dev

使用expressJS检查数据库中的用户名和电子邮件

Related 相关文章

  1. 1

    从他的电子邮件ID中检索用户Outlook显示名称(即用户名)

  2. 2

    多租户应用程序的身份,允许重复的电子邮件或用户名

  3. 3

    多租户应用程序的身份,允许重复的电子邮件或用户名

  4. 4

    如何获取Facebook SDK的用户名和电子邮件ID?

  5. 5

    从android应用程序版本4.4中获取Facebook朋友信息,例如电子邮件ID和电话号码

  6. 6

    如何从Android应用程序中的Facebook SDK获取电子邮件ID?

  7. 7

    解析Android中的登录用户名和电子邮件

  8. 8

    超过了 Google Apps 脚本中从电子邮件域检索用户名和电子邮件地址的最长执行时间

  9. 9

    如何检测用户是否已通过Firebase和Facebook,电子邮件或Google通过Swift使用我的应用程序登录了我的应用程序

  10. 10

    从UserCreationForm中删除用户名,并根据电子邮件,名字和姓氏自动为用户生成用户名

  11. 11

    我可以从Playstore知道已安装我的应用程序的用户的电子邮件ID吗

  12. 12

    从Android应用程序获取已登录用户的Facebook电子邮件

  13. 13

    用户名和电子邮件的Rails验证

  14. 14

    REST API 的用户名和电子邮件检查

  15. 15

    用户名和电子邮件验证

  16. 16

    UIsearchbar 搜索电子邮件和用户名

  17. 17

    如何在git中更新全局配置(用户名和用户电子邮件)?

  18. 18

    如何允许用户使用php中的用户名和电子邮件登录?

  19. 19

    如何在没有任何电子邮件/用户名的情况下将我的电子邮件/用户名添加到旧提交中?

  20. 20

    SourceTree如何加载我的帐户用户名和电子邮件(来自bitbucket,github)?

  21. 21

    想要发送电子邮件ID和用户名以及密码

  22. 22

    从Phabricator中的用户名获取电子邮件

  23. 23

    在激活电子邮件中交流用户名

  24. 24

    Crashlytics:如何查看崩溃详细信息中的用户名/电子邮件/ ID?

  25. 25

    如何从iOS应用程序中获取HockeyApp用户的电子邮件/ ID?

  26. 26

    电子邮件和用户名验证在yii2中不起作用

  27. 27

    如何在Java中解码访问令牌并获取用户名和电子邮件?

  28. 28

    如何停止在php中存储现有的用户名和电子邮件?

  29. 29

    使用expressJS检查数据库中的用户名和电子邮件

热门标签

归档