簡體   English   中英

用於Android登錄的Facebook SDK

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM