Как интегрировать вход в Facebook в Backendless? - PullRequest
0 голосов
/ 07 мая 2018

Это Мой LoginActivity.java

public class LoginActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener,
    View.OnClickListener {

@BindView(R.id.login_facebook)
Button loginFacebookBtn;

@BindView(R.id.privacy_policy)
TextView privacyPolicy;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    ButterKnife.bind(this);




    Backendless.setUrl(AppConstant.SERVER_URL);
    Backendless.initApp(this, AppConstant.APPLICATION_ID, AppConstant.API_KEY);




    String userToken = UserTokenStorageFactory.instance().getStorage().get();

    if (userToken != null && !userToken.equals("")) {

        Backendless.UserService.isValidLogin(new DefaultCallback<Boolean>(this) {
            @Override
            public void handleResponse(Boolean isValidLogin) {
                if (isValidLogin && Backendless.UserService.CurrentUser() == null) {
                    String currentUserId = Backendless.UserService.loggedInUser();

                    if (!currentUserId.equals("")) {
                        Backendless.UserService.findById(currentUserId, new DefaultCallback<BackendlessUser>(LoginActivity.this, "Logging in...") {
                            @Override
                            public void handleResponse(BackendlessUser currentUser) {
                                super.handleResponse(currentUser);
                                Backendless.UserService.setCurrentUser(currentUser);
                                ActivityHelper.start(LoginActivity.this, MainActivity.class);
                                finish();
                            }
                        });
                    }
                }

                super.handleResponse(isValidLogin);
            }
        });
    }

    loginWithFacebook();

    privacyPolicy.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new Intent(LoginActivity.this, PrivacyPolicy.class));
        }
    });

    registerDevice();
}

private void registerDevice() {
    Backendless.Messaging.registerDevice(AppConstant.GCM_SENDER_ID, AppConstant.MESSAGING_CHANNEL, registerCallback());
}

private DefaultCallback<Void> registerCallback() {
    return new DefaultCallback<Void>(this) {
        @Override
        public void handleResponse(Void response) {
            super.handleResponse(response);
        }

        @Override
        public void handleFault(BackendlessFault fault) {
            super.handleFault(fault);
        }
    };
}

private void loginWithFacebook() {
    loginFacebookBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onLoginWithFacebookButtonClicked();
        }
    });
}

private void onLoginWithFacebookButtonClicked() {

    Map<String, String> facebookFieldsMapping = new HashMap<>();
    facebookFieldsMapping.put("name", "name");
    facebookFieldsMapping.put("email", "email");

    List<String> facebookPermissions = new ArrayList<>();
    facebookPermissions.add("email");

    Backendless.UserService.loginWithFacebook(LoginActivity.this, null, facebookFieldsMapping, facebookPermissions, new SocialCallback<BackendlessUser>(LoginActivity.this) {
        @Override
        public void handleResponse(BackendlessUser response) {
            ActivityHelper.start(LoginActivity.this, MainActivity.class);
            finish();
        }

        @Override
        public void handleFault(BackendlessFault fault) {
            super.handleFault(fault);

            Toasty.info(LoginActivity.this, "Try again, please ..", Toast.LENGTH_LONG).show();
        }
    }, true);

}

@Override
public void onBackPressed() {
    super.onBackPressed();
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    finish();
    System.exit(0);
}

@Override
public void onClick(View view) {

}

@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {

}}

Это мои настройки учетной записи разработчиков Facebook

скриншот в Facebook 1

скриншот в Facebook 2

скриншот в Facebook 3

Мой код успешно работает в Android Studio без каких-либо ошибок. Но когда я запускаю приложение, я получаю эту ошибку.

Can't load URL: The domain of this URL isn't included in the app's domains. To be able to load this URL, add all domains and sub-domains of your app to the App Domains field in your app settings.

скриншот с ошибкой

Я создал свой LoginActivity.java пока, взяв это как ссылку

https://backendless.com/documentation/users/android/index.html?users_facebook_login.htm

много искал в сети, но не нашел подходящего решения Кто-нибудь может помочь ??

1 Ответ

0 голосов
/ 14 мая 2018

похоже, вам не хватает Домена приложения в настройках Facebook (Настройки> Основные> Домены приложения).

Попробуйте добавить в качестве домена

api.backendless.com

Если это не работает, попробуйте взглянуть на это https://backendless.com/documentation/manage/mgmt_social_settings.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...