Android Facebook登录:如何在没有XML的LoginButton的情况下使用LoginManager检查登录 [英] Android Facebook Login : How to check login using LoginManager without having LoginButton in XML

查看:136
本文介绍了Android Facebook登录:如何在没有XML的LoginButton的情况下使用LoginManager检查登录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经使用LoginButton在我的Android应用中完成了Facebook登录检查,但是我想使用LoginManager进行检查.如何修改我的代码以使其工作?

I have done facebook login check in my android app using LoginButton, but I want to check using LoginManager. How can I modify my code to work that way?

   LoginButton loginButton = (LoginButton) findViewById(R.id.fb_login_button);
    loginButton.setReadPermissions("user_friends");

    shareDialog = new ShareDialog(this);

    //Login Callback registration
    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            Toast.makeText(getApplicationContext(), "in LoginResult on success", Toast.LENGTH_LONG).show();

            //Login success - process to Post
            if (ShareDialog.canShow(ShareLinkContent.class)) {
                String description = "description";
                ShareLinkContent linkContent = new ShareLinkContent.Builder()
                        .setContentTitle("title")
                        .setContentDescription(description)
                        .setContentUrl(Uri.parse("http://google.com"))
                        .setImageUrl(Uri.parse("http://google.com"))
                        .build();

                shareDialog.show(linkContent, ShareDialog.Mode.FEED);
            }

        }

        @Override
        public void onCancel() {
            Toast.makeText(getApplicationContext(), "in LoginResult on cancel", Toast.LENGTH_LONG).show();
        }

        @Override
        public void onError(FacebookException exception) {
            Toast.makeText(getApplicationContext(), "in LoginResult on error", Toast.LENGTH_LONG).show();
        }
    });

如果用户在通过共享"对话框打开之前未登录,我也想打开Facebook登录对话框.登录对话框应与共享对话框相同(在弹出窗口中).怎么做?

Also I want to open Facebook login dialog if user is not logged in before opening by Share dialog. The Login dialog should be same as Share Dialog (in a popup). How to do it?

谢谢!

推荐答案

如果用户已登录,则可以通过调用方法Loginmanger来检查.

You can check, if user logged, by calling the method Loginmanger.logInWithReadPermissions, to manually start login process, without button. You can do it in the onCreate method. If user are logged, it immediately call onSuccess callback method, where you can call your shareDialog. If user are not logged, it will show login screen. And if it was successful (i.e user logged), onSuccess method will be called;

实际上,您可以从代码中删除所有login button提及的内容,并在末尾添加一行:

Actually, you can remove from your code all login button mentions, and add one line to the end:

LoginManager.getInstance().logInWithReadPermissions(this, "user_friends"); //Log in to FB

您还可以使用WritePermissions.您可以在此处中了解所需的权限.

You can use also use WritePermissions. You can read about required permissions here.

这是您的代码,但包装为登录方法,没有任何登录按钮实例.您可以在需要检查用户是否登录的任何地方调用它.

Here's your code, but wrapped as login method, without any login button instances. You can call it anywhere, when you need to check, if user is logged.

public void checkLogin() {
    //Login Callback registration
    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            Toast.makeText(getApplicationContext(), "in LoginResult on success", Toast.LENGTH_LONG).show();

            //Login success - process to Post
            if (ShareDialog.canShow(ShareLinkContent.class)) {
                String description = "description";
                ShareLinkContent linkContent = new ShareLinkContent.Builder()
                        .setContentTitle("title")
                        .setContentDescription(description)
                        .setContentUrl(Uri.parse("http://google.com"))
                        .setImageUrl(Uri.parse("http://google.com"))
                        .build();

                shareDialog.show(linkContent, ShareDialog.Mode.FEED);
            }

        }

        @Override
        public void onCancel() {
            Toast.makeText(getApplicationContext(), "in LoginResult on cancel", Toast.LENGTH_LONG).show();
        }

        @Override
        public void onError(FacebookException exception) {
            Toast.makeText(getApplicationContext(), "in LoginResult on error", Toast.LENGTH_LONG).show();
        }
    });

    LoginManager.getInstance().logInWithReadPermissions(this, "user_friends"); //Log in to FB
}

这篇关于Android Facebook登录:如何在没有XML的LoginButton的情况下使用LoginManager检查登录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆