【问题标题】:retrieve the user details like name address in Facebook integration在 Facebook 集成中检索用户详细信息,例如姓名地址
【发布时间】:2014-01-07 18:11:16
【问题描述】:

您好,我正在使用最新的 Facebook SDK 进行本机登录,并且我已通过本机成功登录,但我无法检索姓名地址等用户详细信息。我使用了以下代码。我的日食中的这条线显示已弃用。 Request.executeMeRequestAsync(session, new Request.GraphUserCallback())

loginbtn = (Button)findViewById(R.id.loginbutton);

        loginbtn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(MainActivity.this,FacebookLogin.class);
                startActivity(intent);

            }
        }); 
    public class FacebookLogin extends Activity{
    //private TextView textInstructionsOrLink;

    //private Session.StatusCallback statusCallback = new SessionStatusCallback();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.facebooklogin);

         Session.openActiveSession(this, true, new Session.StatusCallback() {

             // callback when session changes state
             @SuppressWarnings("deprecation")
        @Override
             public void call(final Session session, SessionState state, Exception exception) {
               if (session.isOpened()) {


                 // make request to the /me API
                 Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

                   // callback after Graph API response with user object
                   @Override
                   public void onCompleted(GraphUser user, Response response) {
                     if (user != null) {
                      Log.i("USERName", ""+user.getName());
                      Log.i("Birthday", ""+user.getBirthday());
                      Log.i("LastName", ""+user.getLastName());
                      Log.i("FirstName", ""+user.getFirstName());


                        Intent i =new Intent(getApplicationContext(), MainActivity.class);
                        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                        startActivity(i);

                        finish();

                     }
                   }
                 });



               }
             }
           });


    }





    @SuppressWarnings("deprecation")
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.i("onActivityResult", "called");

        super.onActivityResult(requestCode, resultCode, data);
        Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);


        Session session = Session.getActiveSession();
        if (session.isOpened()) {




           // make request to the /me API
            Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

              // callback after Graph API response with user object
              @Override
              public void onCompleted(GraphUser user, Response response) {
                if (user != null) {
                     Log.i("USERName", ""+user.getName());
                      Log.i("Birthday", ""+user.getBirthday());
                     Log.i("LastName", ""+user.getLastName());
                     Log.i("FirstName", ""+user.getFirstName());

                        Intent i =new Intent(getApplicationContext(), MainActivity.class);
                        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                        startActivity(i);
                        finish();
                        Log.i("USERName", ""+user.getName());
                }
              }
            });


          }else {
            finish();
        }


    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        Log.i("onSaveInstanceState", "called");
        super.onSaveInstanceState(outState);
        Session session = Session.getActiveSession();
        Session.saveSession(session, outState);
    }


}

【问题讨论】:

    标签: android facebook integration


    【解决方案1】:

    我就是这样做的。查看此源代码: https://github.com/madhur/MapMyLocation/blob/develop/src/in/co/madhur/mapmylocation/activity/FBLogin.java

    //Create the Request
    Request meRequest=Request.newMeRequest(session, new GraphUserCallback()
                                    {
    
                                            @Override
                                            public void onCompleted(GraphUser user, Response response)
                                            {
                                                    if(response.getError()==null)
                                                    {
    
                                                            appPreferences.setFBUserName(user.getName());
                                                    }
    
                                            }
                                    });
     //Execute the request
     meRequest.executeAsync();
    

    【讨论】:

    • 在我的日食中显示已弃用。 Request.executeMeRequestAsync(session, new Request.GraphUserCallback()) 你能告诉我为什么吗?
    • 它已被 facebook 弃用。像我一样在创建请求对象后使用 meRequest.executeAsync()。
    • 我使用了这个,但没有发生任何事情 Request meRequest=Request.newMeRequest(session, new GraphUserCallback() { @Override public void onCompleted(GraphUser user, Response response) { // TODO 自动生成的方法存根Log.i("USERName", ""+user.getName()); Log.i("Birthday", ""+user.getBirthday()); Log.i("LastName", ""+user.getLastName ()); Log.i("FirstName", ""+user.getFirstName()); } }); RequestAsyncTask asyncTask=meRequest.executeAsync();
    • 并且请给我任何示例,例如具有按钮和单击按钮的活动,它将本机登录并提供用户详细信息或任何类似的帮助?
    猜你喜欢
    • 2018-11-30
    • 2017-01-18
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多