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.