简体   繁体   中英

Facebook login fail - android

i use facebook sdk to login to my app i need only the accesstoken & email when i click LoginButton (com.facebook.widget) nothing nothing happens when Debug - fail on session.isOpened();H

onCreate code:

lblEmail = (TextView) findViewById(R.id.lblEmail);
    LoginButton authButton = (LoginButton) findViewById(R.id.authButton);
    authButton.setOnErrorListener(new LoginButton.OnErrorListener() {

        @Override
        public void onError(FacebookException error) {
            Log.i(TAG, "Error " + error.getMessage());
        }
    });
    // set permission list, Don't foeget to add email
    authButton.setReadPermissions(Arrays.asList("basic_info", "email"));
    // session state call back event
    authButton.setSessionStatusCallback(new Session.StatusCallback() {

        @Override
        public void call(Session session, SessionState state, Exception exception) {

            if (session.isOpened()) {
                Log.i(TAG,"Access Token"+ session.getAccessToken());
                //Request.executeMeRequestAsync(session,
                Request.newMeRequest(session,
                        new Request.GraphUserCallback() {
                            @Override
                            public void onCompleted(GraphUser user, Response response) {
                                if (user != null) {
                                    Log.i(TAG, "User ID " + user.getId());
                                    Log.i(TAG, "Email " + user.asMap().get("email"));
                                    lblEmail.setText(user.asMap().get("email").toString());
                                }
                            }
                        }
                );
            }

        }
    });

try this for get facebook name,emailId and accessToken

  Session session;

inside onCreate method

  this.session = createSession();
  this.session = Session.getActiveSession();

createSession method

  private Session createSession() {
    Session activeSession = Session.getActiveSession();
    if (activeSession == null || activeSession.getState().isClosed()) {

        activeSession = new Session.Builder(this).setApplicationId("APPLICATION-ID")
                .build();
        Session.setActiveSession(activeSession);
    }
    return activeSession;
  }

login Button click

 if (session.isOpened()) {
            callRequest();
        } else {
            StatusCallback callback = new StatusCallback() {
                public void call(Session session, SessionState state,
                        Exception exception) {
                    if (exception != null) {
                        new AlertDialog.Builder(MainActivity.this)
                                .setTitle("Login Failed")
                                .setMessage(exception.getMessage())
                                .setPositiveButton("OK", null).show();
                        session = createSession();
                    }
                    onSessionStateChange(session, state, exception);
                }
            };

            session = createSession();
            session.openForRead(new Session.OpenRequest(
                    MainActivity.this).setPermissions("email")
                    .setCallback(callback));
        }

callRequest method

   public void callRequest() {
    if (!call) {
        call = true;

        Request.newMeRequest(session, new GraphUserCallback() {

            @Override
            public void onCompleted(GraphUser user, Response response) {
                try {
                    String name = user.getName();
                    String email = user.getProperty("email").toString();

                    String accessToken = session.getAccessToken();

                    System.out.println("name : " + name + "\nemail : "
                            + email + "\naccessToken : " + accessToken);

                    Intent intent = new Intent(MainPageActivity.this,
                            HomeActivity.class);
                    intent.putExtra("u_name", name);
                    intent.putExtra("u_email", email);
                    intent.putExtra("accessToken", accessToken);

                    startActivity(intent);
                    overridePendingTransition(R.anim.slide_in,
                            R.anim.slide_out);
                    finish();

                } catch (Exception e) {

                    e.printStackTrace();
                }
            }
        }).executeAsync();
    }
}

onSessionStateChange method

 private void onSessionStateChange(Session session, SessionState state,
        Exception exception) {
    if (state.isOpened()) {
        callRequest();
    }
}

onActivityResult method

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (this.session.onActivityResult(this, requestCode, resultCode, data)
            && this.session.getState().isOpened()) {
        callRequest();
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM