[英]Facebook SDK for android login
我試圖制作一個可以使用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();
}
}
我用Toast知道會發生什么。 該應用程序不顯示任何消息。 它不調用onComplete,我也不知道為什么。 該對話框正在運行,當我在輸入電子郵件和密碼后單擊登錄按鈕時,它將不執行任何操作而返回主屏幕。 有誰知道這是什么問題? 提前致謝
這一次發生在我身上,我通過執行此操作解決了問題:首先嘗試使用下面的代碼打印您的密鑰哈希,檢查打印的密鑰哈希是否與您的Facebook Developer Dashboard中的密鑰哈希相同,如果不同,請更改儀表板上的那個到打印出來的一個。
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) {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.