从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 条评论
登录 后参与评论

相关文章

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

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

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

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

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

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

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

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

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

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

UIsearchbar 搜索电子邮件和用户名

用户名和电子邮件验证

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

如何检查电子邮件和用户名

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

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

我将如何获取电子邮件和用户名的数据?

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

有没有办法在Android Studio中通过代码编辑用户名和电子邮件?

在Java中获取Google的电子邮件/用户名?

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

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

如何在terraform中从电子邮件ID中修剪用户名

如何更新在 Mikepenz drawer android 中提交的用户名和电子邮件

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

检查用户名和电子邮件已存在于 php mysql 中

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

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

在Flutter App的Firebase Auth中查找电子邮件和用户名是否已存在