安卓Facebook获取所有个人资料信息

11

我要如何从Facebook获取所有用户的个人资料信息(例如名字、姓氏、电子邮件等)?

我已经下载了FB SDK,但是没有获取个人资料信息的示例。

4个回答

11

在文件夹facebook-android-sdk/examples/simple中有一个示例。它展示了如何异步请求用户基本数据。您将能够找到这些数据

祝好


有些信息(如电子邮件地址)需要在身份验证请求中添加特定的权限标志。请参见https://dev59.com/OnA65IYBdhLWcg3w1SRC。 - larham1

8
这是我试过的最快方法:
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;

import android.widget.Toast;

import com.facebook.Request;
import com.facebook.Request.GraphUserCallback;
import com.facebook.Response;
import com.facebook.Session;
import com.facebook.Session.StatusCallback;
import com.facebook.SessionState;
import com.facebook.model.GraphUser;
import com.x.y.android.R;

public class FBConnect extends FragmentActivity {
    private static final String TAG = "FacebookConnect";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.facebook_connect);


    if (Session.getActiveSession() == null
            || Session.getActiveSession().isClosed()) {
        Session.openActiveSession(this, true, new StatusCallback() {

            @Override
            public void call(Session session, SessionState state,
                    Exception exception) {
                System.out.println("State= " + state);

                if (session.isOpened()) {
                    System.out.println("Token=" + session.getAccessToken());
                    Request.executeMeRequestAsync(session,
                            new GraphUserCallback() {
                                @Override
                                public void onCompleted(GraphUser user,
                                        Response response) {
                                    if (user != null) {
                                        System.out.println("User=" + user);

                                    }
                                    if (response != null) {
                                        System.out.println("Response="
                                                + response);
                                        Toast.makeText(FBConnect.this,
                                                response.toString(),
                                                Toast.LENGTH_LONG).show();
                                    }
                                }
                            });
                }
                if (exception != null) {
                    System.out.println("Some thing bad happened!");
                    exception.printStackTrace();
                }
            }
        });
    }
    }

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

}

3

首先创建你的应用程序并获取应用程序ID,然后将此ID传递给你的代码,如下所示。全局初始化

public static final String mAPP_ID = "Your APP ID";
Facebook mFacebook= new Facebook(mAPP_ID); 

在On Create()中为您的按钮设置setOnClickListener。
// facebook login button click event
try{            
    //mFacebook.logout(LoginActivity.this);
    ((Button)findViewById(R.id.loginPageFaceBookButton)).setOnClickListener(loginButtonListener);

    SessionStore.restore(mFacebook,LoginPage.this);         
} catch (Exception e) {
        Toast.makeText( LoginPage.this,"Exception"+e.toString(), Toast.LENGTH_SHORT).show();
}


    // loginButtonListener
        //----------------------------------------------

        private OnClickListener loginButtonListener = new OnClickListener()
        {
            public void onClick( View v )
            {
                if(!mFacebook.isSessionValid() )
                {   
                    mFacebook.authorize(LoginPage.this, new String[] {"publish_stream","email","user_groups","read_stream","user_about_me","offline_access"},Facebook.FORCE_DIALOG_AUTH, new LoginDialogListener());
                }
                else
                {
                    try 
                    {

                        JSONObject json = Util.parseJson(mFacebook.request("me"));
                        facebookID = json.getString("id");
                        facebookEmail = json.getString("email");
                        faceBooklastName=json.getString("last_name");
                        faceBookFirstName=json.getString("first_name");


                    }
                    catch (Exception e)
                    {
                        // TODO: handle exception
                        //Toast.makeText( LoginActivity.this,"Exception FB "+e.toString(), Toast.LENGTH_SHORT).show();
                    }

                    catch( FacebookError error )
                    {
                        Toast.makeText( LoginPage.this,error.toString(), Toast.LENGTH_SHORT).show();
                    }
                }
            }
        }; 


//onActivityResult
    //***********************************************************
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {

        mFacebook.authorizeCallback(requestCode, resultCode, data);
    }


    // DialogListener CLASS STATRT HERE.

     public final class LoginDialogListener implements DialogListener
        {
            public void onComplete(Bundle values)
            {
                try 
                {
                    JSONObject json = Util.parseJson(mFacebook.request("me"));
                    facebookID = json.getString("id");
                    facebookEmail = json.getString("email");
                    SessionStore.save(mFacebook, LoginPage.this); Toast.makeText( LoginPage.this,"facebookID :"+facebookID+" \n "+"facebookEmail : "+facebookEmail, Toast.LENGTH_SHORT).show();
                }
                catch( Exception error ) 
                {
                    Toast.makeText( LoginPage.this, error.toString(), Toast.LENGTH_SHORT).show();
                }
                catch( FacebookError error )
                {
                    Toast.makeText( LoginPage.this, error.toString(), Toast.LENGTH_SHORT).show();
                }
            }

            public void onFacebookError(FacebookError error) {
                Toast.makeText( LoginPage.this, "Something went wrong. Please try again.1"+error.toString(), Toast.LENGTH_LONG).show();
            }

            public void onError(DialogError error) {
                Toast.makeText( LoginPage.this, "Something went wrong. Please try again.2"+error.toString(), Toast.LENGTH_LONG).show();
            } 

            public void onCancel() {
                Toast.makeText( LoginPage.this, "Something went wrong. Please try again.3", Toast.LENGTH_LONG).show();
            }
            /******  Facebook Login End  *******/

        }

3
现在已经不推荐使用Facebook mFacebook= new Facebook(mAPP_ID)了,在Android应用程序中集成Facebook是否有其他方法? - keen

1
// Make an API call to get user data and define a 
// new callback to handle the response.
Request request = Request.newMeRequest(session, 
        new Request.GraphUserCallback() {
    @Override
    public void onCompleted(GraphUser user, Response response) {
        // If the response is successful
        if (session == Session.getActiveSession()) {
            if (user != null) {
                // Set the id for the ProfilePictureView
                // view that in turn displays the profile picture.
                profilePictureView.setProfileId(user.getId());
                // Set the Textview's text to the user's name.
                userNameView.setText(user.getName());
            }
        }
        if (response.getError() != null) {
            // Handle errors, will do so later.
        }
    }
});
request.executeAsync();

这只是获取用户数据!您可以根据第一个答案找到所有相应的详细信息,该答案链接到一个包含可检索到的所有相关字段的FB文档!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接