I am integrating facebook login in my android app in which I want when a simple button is click then I want to fetch user details.I do not want to place facebook login button. How can I do that
here is my code:-
private Button loginButton;
private CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
setContentView(R.layout.activity_main);
loginButton = (Button) findViewById(R.id.login_button);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile, email, user_birthday, user_friends"));
}
});
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(final LoginResult loginResult) {
Log.d("Success", "Login");
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
Log.e("JSON:", object.toString());
String user_ID = null;
try {
user_ID = object.getString("id");
} catch (JSONException e) {
e.printStackTrace();
}
CFacbookStorage facebookstorage = new CFacbookStorage();
facebookstorage.setM_UserId(user_ID);
Intent i = new Intent(MainActivity.this, CFacebookDeatails.class);
i.putExtra("user_data", facebookstorage);
startActivity(i);
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender, birthday");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
// Toast.makeText(Login.this, "Login Cancel", Toast.LENGTH_LONG).show();
}
@Override
public void onError(FacebookException exception) {
Toast.makeText(MainActivity.this, exception.getMessage(), Toast.LENGTH_LONG).show();
}
});
AccessToken token;
token = AccessToken.getCurrentAccessToken();
if (token == null) {
//Means user is not logged in
} else {
Log.d("TAG", "init: facebooklogin " + AccessToken.USER_ID_KEY + " " + AccessToken.ACCESS_TOKEN_KEY + " ");
}
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile, email, user_birthday, user_friends"));
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}
CFacbookStorage class code:-
public static CFacbookStorage cFacbookStorage;
public String getM_UserId() {
return m_UserId;
}
public void setM_UserId(String m_UserId) {
this.m_UserId = m_UserId;
}
public String m_UserId;
public static CFacbookStorage getInstance(){
if (cFacbookStorage==null){
cFacbookStorage = new CFacbookStorage();
}
return cFacbookStorage;
}
}
CFacebookDetail
private TextView info;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_details);
info = (TextView)findViewById(R.id.info);
}
in this code I am getting error in loginButton.registerCallback(){}