0
我是新開發的android開發人員。我已經下載了facebook sdk 3.0.1,並使用示例代碼進行登錄。問題是,如果安裝了Facebook應用程序,身份驗證將失敗。 (否則它工作正常) 在按下登錄按鈕後,我到達狀態爲CLOSED_LOGIN_FAILED的onActivityResult。 當然,我沒有輸入密碼,它是通過Facebook的應用程序自動完成的,Facebook應用程序已登錄並正常運行。 我無法找到一個解決方案.. 請幫我:)Facebook登錄失敗,並安裝了Facebook應用程序
這是我的代碼:
@Override
protected void onCreate(Bundle savedInstanceState) {
instance = this;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonLoginToFacebook = (Button) findViewById(R.id.buttonLoginToFacebook);
tvWellcome = (TextView) findViewById(R.id.tvWellcome);
Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);
Session session = Session.getActiveSession();
if (session == null) {
if (savedInstanceState != null) {
session = Session.restoreSession(this, null, statusCallback,
savedInstanceState);
}
if (session == null) {
session = new Session(this);
}
Session.setActiveSession(session);
if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
session.openForRead(new Session.OpenRequest(this)
.setCallback(statusCallback));
}
}
updateView();
}
@Override
public void onStart() {
super.onStart();
Session.getActiveSession().addCallback(statusCallback);
}
@Override
public void onStop() {
super.onStop();
Session.getActiveSession().removeCallback(statusCallback);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode,
resultCode, data);
updateView();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Session session = Session.getActiveSession();
Session.saveSession(session, outState);
}
private void updateView() {
Session session = Session.getActiveSession();
if (session.isOpened()) {
Intent intent = new Intent(this, ScreenStartPage.class);
startActivity(intent);
} else {
buttonLoginToFacebook.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
onClickLogin();
}
});
}
}
private void onClickLogin() {
Session session = Session.getActiveSession();
if (!session.isOpened() && !session.isClosed()) {
session.openForRead(new Session.OpenRequest(this)
.setCallback(statusCallback));
updateView();
} else {
Session.openActiveSession(this, true, statusCallback);
}
}
public void onClickLogout() {
Session session = Session.getActiveSession();
if (!session.isClosed()) {
session.closeAndClearTokenInformation();
}
}
private class SessionStatusCallback implements Session.StatusCallback {
@Override
public void call(Session session, SessionState state,
Exception exception) {
updateView();
}
}
是的,我做過了,如果我沒有安裝facebook應用程序,連接是否會起作用?感謝您的回覆 – Shira 2013-04-11 06:22:52
我重新檢查了開發者頁面上的設置,顯然包名稱不匹配。當我修復它時,我在嘗試登錄到應用程序時發現facebook的錯誤,說明密鑰散列不匹配。我複製了他們的密鑰散列,現在它終於工作了!謝謝阿米爾! – Shira 2013-04-11 08:25:45
嘿@Amir Naor我嘗試使用UILifeCycleHelper實現FB登錄流程,在某些情況下,通常包含FB響應的「mMap」字段的'data'參數爲空。爲什麼會發生這種情況? – toobsco42 2013-08-26 07:17:41