In below code i am using facebook provided chrome custom tab feature, facebook login screen is opening in both chrome (if device having chrome browser) or else simple webview and also in facebook app (if device having app) but after granting the general permission graphapi not providing any data even after async call i'm not getting what i am doing wrong in this please help if possible
extra info :- This is calling inside a fragment, facebook login screen is opening in all three way just the callback is not working till now i am not able to find solution for this only get unanswered question, is their any way that we can contact facebook regarding this.
gradle dependencies
compile 'com.facebook.android:facebook-android-sdk:[4,5)' android manifest code
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> <activity android:name="com.facebook.FacebookActivity" android:configChanges= "keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" /> <activity android:name="com.facebook.CustomTabActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="@string/fb_login_protocol_scheme" /> </intent-filter> </activity> login code
facebook_sign.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mCallbackManager = CallbackManager.Factory.create(); LoginManager.getInstance().logInWithReadPermissions(getActivity(), App_Contants.PERMISSIONS); LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted(JSONObject object, GraphResponse response) { try { final String id = object.getString("id"); final String name = object.getString("name"); final String email = object.getString("email"); final String gender = object.getString("gender"); final String picture = object.getJSONObject("picture").getJSONObject("data").getString("url"); final String data = id + ", " + name + ", " + email + ", " + gender + ", "+ ", " + picture; Log.e("my_data", response.getRawResponse()); } catch (JSONException e) { e.printStackTrace(); } } }); Bundle parameters = new Bundle(); parameters.putString("fields", "id,name,email,gender,picture.width(400).height(400)"); request.setParameters(parameters); request.executeAsync(); } @Override public void onCancel() { Toast.makeText(mContext,"Facebook Login Cancel",Toast.LENGTH_SHORT).show(); } @Override public void onError(FacebookException error) { error.printStackTrace(); } }); } }); @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { mCallbackManager.onActivityResult(requestCode, resultCode, data); } // Result returned from launching the Intent from // GoogleSignInApi.getSignInIntent(...); if (requestCode == 1) { GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); if (result.isSuccess()) { GoogleSignInAccount acct = result.getSignInAccount(); // Get account information Log.e("data",acct.getEmail()); mGoogleApiClient.stopAutoManage(getActivity()); mGoogleApiClient.disconnect(); }else if(result.getStatus().isCanceled()){ mGoogleApiClient.stopAutoManage(getActivity()); mGoogleApiClient.disconnect(); }else if(result.getStatus().isInterrupted()){ mGoogleApiClient.stopAutoManage(getActivity()); mGoogleApiClient.disconnect(); }else{ mGoogleApiClient.stopAutoManage(getActivity()); mGoogleApiClient.disconnect(); } } }