Skip to content

Instantly share code, notes, and snippets.

@lalitsharma1607
Created October 10, 2017 09:26
Show Gist options
  • Save lalitsharma1607/77391a5bdde6d21b5cd3f1bc41deb190 to your computer and use it in GitHub Desktop.
Save lalitsharma1607/77391a5bdde6d21b5cd3f1bc41deb190 to your computer and use it in GitHub Desktop.
Facebook Login in android
dependencies{
....
compile 'com.facebook.android:facebook-android-sdk:4.+'
....
}
private CallbackManager callbackManager;
private LoginManager loginManager;
private ProgressDialog mProgressDialog;
public FragmentLogin() {
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_login_container, null);
return view;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getActivity());
setUpFacebook();
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
signup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//your code
}
});
}
@Override
public void onStart() {
super.onStart();
}
@OnClick(R.id.fb_login)
void connectToFacebook() {
if (AccessToken.getCurrentAccessToken() == null)
loginManager.logInWithReadPermissions(FragmentLogin.this, Arrays.asList("public_profile", "email", "user_birthday"));
else {
getFbDetails(AccessToken.getCurrentAccessToken());
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN && resultCode == Activity.RESULT_OK) {
try {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
handleSignInResult(result);
} catch (Exception e) {
e.printStackTrace();
}
}
Log.e("succes", "in fragment");
}
private void setUpFacebook() {
callbackManager = CallbackManager.Factory.create();
loginManager = LoginManager.getInstance();
loginManager.registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.e("email is", "successs");
final AccessToken accessToken = loginResult.getAccessToken();
getFbDetails(accessToken);
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
Toast.makeText(getActivity(), "error", Toast.LENGTH_LONG).show();
// App code
}
});
}
private void getFbDetails(AccessToken accessToken) {
Myutils.Showprogressbar(getActivity());
GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject user, GraphResponse graphResponse) {
JSONObject jsonObject = graphResponse.getJSONObject();
try {
String profilePicUrl = jsonObject.getJSONObject("picture").getJSONObject("data").getString("url");
String email = user.optString("email");
String name = user.optString("name");
String id = user.optString("id");
Log.e("email is", "" + user.optString("email"));
Log.e("link is", "" + user.optString("link"));
Log.d("response is", "" + user);
socialLogin(email, id, profilePicUrl, "facebook", name);
} catch (JSONException e) {
e.printStackTrace();
}
// Toast.makeText(getActivity(), "link:" + (user.optString("picture")), Toast.LENGTH_LONG).show();
// Toast.makeText(getActivity(), "link:" + (user), Toast.LENGTH_LONG).show();
}
});
Bundle bundle = new Bundle();
bundle.putString("fields", "id,email,name,birthday,link,picture.type(large)");
request.setParameters(bundle);
request.executeAsync();
}
@Override
public void onStop() {
super.onStop();
if (mProgressDialog != null) {
mProgressDialog.dismiss();
}
}
private void showProgressDialog() {
if (mProgressDialog == null) {
mProgressDialog = new ProgressDialog(getActivity());
mProgressDialog.setMessage(getString(R.string.loading));
mProgressDialog.setIndeterminate(true);
}
mProgressDialog.show();
}
private void hideProgressDialog() {
if (mProgressDialog != null && mProgressDialog.isShowing()) {
mProgressDialog.hide();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment