繁体   English   中英

如何在Backendless中集成Facebook登录?

[英]How to integrate facebook login in Backendless?

这是我的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

脸书截图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

在网络上搜索了很多,但没有得到任何相关的解决方案,有人可以帮忙吗?

好像您的Facebook设置(设置>基本>应用程序域)中缺少应用程序域。

尝试添加为您的域

api.backendless.com

如果这不起作用,请尝试查看此https://backendless.com/documentation/manage/mgmt_social_settings.htm

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM