Here is the Screenshot Logging into my App using Facebook credentials is not working correctly through browsers. But it gives an error when logging in through the Facebook App. It is not automatically redirecting to my App and remains in Facebook by showing "The page you requested cannot be displayed right now. It may be temporarily unavailable.....".like that. Thanks in Advance. Here is my LoginActivity:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_log);
loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions("email");
mail = (EditText) findViewById(R.id.log_mail);
pass = (EditText) findViewById(R.id.log_pass);
callbackManager = CallbackManager.Factory.create();
accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(
AccessToken oldAccessToken,
AccessToken currentAccessToken) {
// Set the access token using
// currentAccessToken when it's loaded or set.
}
};
// If the access token is available already assign it.
accessToken = AccessToken.getCurrentAccessToken();
AppEventsLogger.activateApp(this);
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Toast.makeText(getApplicationContext(), "Logged in with fb", Toast.LENGTH_SHORT).show();
System.out.println("onSuccess");
String accessToken = loginResult.getAccessToken().getToken();
Log.i("", accessToken);
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
Log.i("LoginActivity", response.toString());
// Get facebook data from login
Bundle bFacebookData = getFacebookData(object);
mail_id= bFacebookData.getString("email");
prof_pic= bFacebookData.getString("profile_pic");
f_name=bFacebookData.getString("first_name");
l_name=bFacebookData.getString("last_name");
bFacebookData.putString("img",prof_pic);
bFacebookData.putString("mail_id",mail_id);
bFacebookData.putString("fname",f_name);
bFacebookData.putString("lname",l_name);
Intent i = new Intent(LogActivity.this, HomeActivity.class);
//
i.putExtras(bFacebookData);
startActivity(i);
//
Toast.makeText(getApplicationContext(),mail_id,Toast.LENGTH_LONG).show();
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id, first_name, last_name, email,gender, birthday, location"); // Parámetros que pedimos a facebook
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
Toast.makeText(getApplicationContext(), "Log in Cancelled..!!", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(FacebookException error) {
Toast.makeText(getApplicationContext(), "Error in log in,error is : " + error, Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
@Override
public void onDestroy() {
super.onDestroy();
accessTokenTracker.stopTracking();
}
private Bundle getFacebookData(JSONObject object) {
try {
Bundle bundle = new Bundle();
String id = object.getString("id");
try {
URL profile_pic = new URL("https://graph.facebook.com/" + id + "/picture?width=200&height=150");
Log.i("profile_pic", profile_pic + "");
bundle.putString("profile_pic", profile_pic.toString());
} catch (MalformedURLException e) {
e.printStackTrace();
return null;
}
bundle.putString("idFacebook", id);
if (object.has("first_name"))
bundle.putString("first_name", object.getString("first_name"));
if (object.has("last_name"))
bundle.putString("last_name", object.getString("last_name"));
if (object.has("email"))
bundle.putString("email", object.getString("email"));
if (object.has("gender"))
bundle.putString("gender", object.getString("gender"));
if (object.has("birthday"))
bundle.putString("birthday", object.getString("birthday"));
if (object.has("location"))
bundle.putString("location", object.getJSONObject("location").getString("name"));
return bundle;
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
Because i'm using the latest version of android-facebook-sdk,I have updated the facebook application in my phone and it solved the issue.Thanks everyone for the support.cheers!!
In module based gradle file add following dependancy
initialize facebook sdk before setContentView
add following code in onCreate:
add following in onActivityResult: