用于android登录的Facebook SDK
我尝试制作一个应用程序,可以使用facebook SDK连接到facebook。我已经和facebook的开发者签约,并做了所有必要的事情。这是我的密码:用于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
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”,我修复了它,但现在它不调用任何一个。正如你所看到的,我用的是吐司,但没有任何一种。还有其他想法吗?你是用模拟器还是手机来调试?