用于android登录的Facebook SDK

用于android登录的Facebook SDK,android,facebook,login,Android,Facebook,Login,我尝试制作一个应用程序,可以使用facebook SDK连接到facebook。我已经和facebook的开发者签约,并做了所有必要的事情。这是我的密码: public class MainActivity extends Activity implements OnClickListener { Facebook fb; ImageView logButton; SharedPreferences sp; @SuppressWarnings("deprecation") @Override p

我尝试制作一个应用程序,可以使用facebook SDK连接到facebook。我已经和facebook的开发者签约,并做了所有必要的事情。这是我的密码:

public class MainActivity extends Activity implements OnClickListener {
Facebook fb;
ImageView logButton;
SharedPreferences sp;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

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

    logButton = (ImageView) findViewById(R.id.login);
    logButton.setOnClickListener(this);
}
@SuppressWarnings("deprecation")
@Override
public void onClick(View arg0) 
{
    if(fb.isSessionValid())
    {
        try 
        {
            fb.logout(getApplicationContext());
        } 
        catch (MalformedURLException e) 
        {
            e.printStackTrace();
        } 
        catch (IOException e) 
        {
            e.printStackTrace();
        }
    }
    else
    {
        fb.authorize(MainActivity.this, new String[] {"email"}, Facebook.FORCE_DIALOG_AUTH, new DialogListener() {

            @Override
            public void onFacebookError(FacebookError e) 
            {
                Toast.makeText(MainActivity.this, "facebook error "+e.getLocalizedMessage(), Toast.LENGTH_LONG).show();
            }

            @Override
            public void onError(DialogError e) 
            {
                Toast.makeText(MainActivity.this, "error", Toast.LENGTH_LONG).show();
            }

            @Override
            public void onComplete(Bundle values) 
            {
                Toast.makeText(MainActivity.this, "done", Toast.LENGTH_LONG).show();
            }

            @Override
            public void onCancel() 
            {
                Toast.makeText(MainActivity.this, "canceled", Toast.LENGTH_LONG).show();
            }
        });
    }
}
@SuppressWarnings("deprecation")
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{   
    Toast.makeText(MainActivity.this, "done1", Toast.LENGTH_LONG).show();
    super.onActivityResult(requestCode, resultCode, data);
    fb.authorizeCallback(requestCode, resultCode, data);
    Toast.makeText(MainActivity.this, "done2", Toast.LENGTH_LONG).show();
}
}


我用吐司来知道会发生什么。应用程序不显示任何消息。它不叫完成,我也不知道为什么。对话框正在工作,当我在输入电子邮件和密码后单击登录按钮时,它会返回主屏幕,而不做任何操作。有人知道问题出在哪里吗?提前感谢

有一次我遇到这种情况,我这样做就解决了: 首先尝试使用下面的代码打印密钥散列,检查打印的密钥散列是否与Facebook开发者仪表板中的密钥散列相同,如果不同,请将仪表板中的密钥散列更改为打印的密钥散列

try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "your package", 
                PackageManager.GET_SIGNATURES);
        for (android.content.pm.Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK :", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
    } catch (NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }

我查过了,这是真正的大麻。这不是问题所在。我以前遇到过这个问题,它总是称为“onFacebookError”,我修复了它,但现在它不调用任何一个。正如你所看到的,我用的是吐司,但没有任何一种。还有其他想法吗?你是用模拟器还是手机来调试?