Я пытаюсь войти в Facebook, используя собственный интерфейс, в классе Activity все работает нормально. то же самое мне нужно сделать и во фрагменте. но он не входит в систему правильно. Я получаю этот экран, когда нажимаю кнопку Facebook
когда я нажимаю кнопку «Продолжить», я не получаю сообщение Log.i(), которое печатаю
Я пытаюсь войти в Facebook, используя собственный интерфейс, в классе Activity все работает нормально. то же самое мне нужно сделать и во фрагменте. но он не входит в систему правильно. Я получаю этот экран, когда нажимаю кнопку Facebook [img]https://i.sstatic.net/zbu1W.png[/img]
когда я нажимаю кнопку «Продолжить», я не получаю сообщение Log.i(), которое печатаю
это мой код фрагмента [code]@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { binding = FragmentLoginBinding.inflate(inflater, container, false); // facebook callback callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback() { @Override public void onSuccess(LoginResult loginResult) { // App code loginWithFacebook(loginResult); }
private void loginWithFacebook(LoginResult loginResult) { // here we will get access token and save data to server AccessToken accessToken = loginResult.getAccessToken(); GraphRequest request = GraphRequest.newMeRequest( accessToken, new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted( JSONObject object, GraphResponse response) { try { String name = object.getString("name"); String id = object.getString("id"); // save to server Log.i("Facebook auth",id); Log.i("Facebook auth",name); } catch (JSONException e) { Log.e("Login With facebook", "onCompleted: ", e); throw new RuntimeException(e); } // Application code } }); Bundle parameters = new Bundle(); parameters.putString("fields", "id,name,link"); request.setParameters(parameters); request.executeAsync(); } [/code] и я добавил этот код в свою активность хоста [code]@Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { Fragment navhost = getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment); navhost.onActivityResult(requestCode,resultCode,data); super.onActivityResult(requestCode, resultCode, data); } [/code] Я использую компонент навигации в своем приложении, и тот же код работает хорошо, когда я использую его в работе.