如何使用自定义登录按钮登录facebook

时间:2015-03-17 10:22:54

标签: android

我正在尝试在我的应用程序中获取facebook登录进行身份验证但是问题是当我尝试在注销内部注销时它无法正常工作,任何人都可以帮助我。代码如下:

public class Facebooklogin extends Activity implements OnClickListener 
{
    ImageView ivFacebook,btnLogout;
    Facebook fb;
    public static final String MyPREFERENCES = "MyPrefs" ;
    String APP_ID;
    private SharedPreferences sp;

    @SuppressWarnings("deprecation")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.loginscreen);

        sp=getPreferences(Context.MODE_PRIVATE);
        String access_token=sp.getString("access_token", null);
        long expires=sp.getLong("access_expires", 0);

        if(access_token !=null)
        {
            fb.setAccessToken(access_token);
        }
        if(expires !=0)
        {
            fb.setAccessExpires(expires);
        }

        APP_ID=getString(R.string.facebook_app_id);
        fb=new Facebook(APP_ID);

        ivFacebook=(ImageView)findViewById(R.id.ivFacebook);
        ivFacebook.setOnClickListener(this);

    }

    @SuppressWarnings("deprecation")
    private void updateButton()
    {
        // TODO Auto-generated method stub

            Intent i = new Intent(Facebooklogin.this,MainAct.class);
            startActivity(i);
    }

    @SuppressWarnings("deprecation")
    public void onClick(View v)
    {
        // TODO Auto-generated method stub

        if(fb.session != null && fb.session.isOpened())
        {
            try {
//                fb.logout(getApplicationContext());
                updateButton();
            } catch (Exception e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        else {
            fb.authorize(Facebooklogin.this, new String[] {"email"},new DialogListener()
            {
                @Override
                public void onFacebookError(FacebookError e)
                {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onError(DialogError e)
                {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onComplete(Bundle values)
                {
                    // TODO Auto-generated method stub

                    Editor editor=sp.edit();
                    editor.putString("access_token", fb.getAccessToken());
                    editor.putLong("access_expires", fb.getAccessExpires());
                    editor.commit();
                    updateButton();
                }

                @Override
                public void onCancel() {
                    // TODO Auto-generated method stub

                }
            });
        }
    }

    @SuppressWarnings("deprecation")
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        fb.authorizeCallback(requestCode, resultCode, data);
    }

1 个答案:

答案 0 :(得分:0)

我在这里看不到任何注销行,您可以清除会话以执行注销。

        if (session != null){
        session.closeAndClearTokenInformation();
        session = null;
    }

同时从共享首选项中删除令牌,并注意您在这里使用旧版本的facebook api。以上方法现已弃用。

相关问题