2014-02-18 20 views
11

我想在我的應用程序中實現Facebook登錄,但是在嘗試登錄時出現問題,例如:{Session state:OPENING,token:{AccessToken token:ACCESS_TOKEN_REMOVED permissions:[]},appId:1xxxxxxxxxxx}

**{Session state:OPENING, token:{AccessToken token:ACCESS_TOKEN_REMOVED permissions:[]}, appId:1xxxxxxxxxxxxxxx}** 

,有時這其中也:

**{Session state:CLOSED, token:{AccessToken token:ACCESS_TOKEN_REMOVED permissions:[]}, appId:1xxxxxxxxxxxxxxx}** 

注:當我的設備已經安裝NATIVE的Facebook應用程序會出現上述問題,如果我卸載Facebook應用程序它工作絕對沒問題。任何人都可以請幫我解決問題是什麼?

在此先感謝

+0

請張貼在一些代碼。 – woot

+0

你有沒有想過如何解決這個問題? – akohout

回答

0

這可能發生,因爲你沒有在你的Facebook應用程序添加hashkey。查看此鏈接Generating Hashkey for Android以瞭解如何生成hashkey

這也發生在我身上。它開始工作後,我在facebook應用程序中添加hashkey

+0

我已經在我的應用程序中添加了散列鍵 –

+0

直接從Eclipse運行並通過運行APK的'hashkey'將有所不同。你在嘗試哪一個? – Apoorv

+0

我在我的設備上運行應用程序,我想添加的另一件事是我已經嘗試了假設樣本的APP_ID,這也不起作用 –

12

一定要在你的活動覆蓋onActivityResult方法:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 

    super.onActivityResult(requestCode, resultCode, data); 

    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); 

} 
+0

這是我的問題,我失去了在我的活動onResume中添加此代碼。謝謝! –

2

我知道這是一個古老的機票,但沒有人似乎給出正確的答案。令牌從toString中移除以防止令牌暴露。

com.facebook.LoggingBehavior(從第29行):

/** 
* Indicates that access tokens should be logged as part of the request logging; normally they are not. 
*/ 
INCLUDE_ACCESS_TOKENS, 

com.facebook.AccessToken(從行322):

private String tokenToString() { 
    if (this.token == null) { 
     return "null"; 
    } else if (Settings.isLoggingBehaviorEnabled(LoggingBehavior.INCLUDE_ACCESS_TOKENS)) { 
     return this.token; 
    } else { 
     return "ACCESS_TOKEN_REMOVED"; 
    } 
} 

要顯示的toString請求令牌只需添加記錄到設置:

Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS); 
    this.mUiLifecycleHelper = new UiLifecycleHelper(this, this.mCallback); 
    this.mUiLifecycleHelper.onCreate(savedInstanceState); 

希望這可以幫助其他同樣的問題。

+0

我對Access_Token_Removed有同樣的問題,在我爲你說的話放上3行。但我得到這個錯誤:com.facebook.FacebookException:無法創建意圖;這可能意味着Facebook應用程序未安裝。如何在沒有FB應用程序的情況下在FB上發佈圖片?我正在使用最新的SDK3.20。 – Sakthi

+0

您是否在設備上安裝了Facebook應用程序?我需要知道您已經實施了哪些其他代碼才能給出更簡潔的答案。 –

+0

這裏得到完整的代碼http://www.paste.org/76322,我需要在這兩種情況下張貼圖像。 – Sakthi

2

只是擡起頭來。 這個確切的例子發生在我身上。我登錄剛剛停止工作,因爲我改變了我的Activity發射模式Manifest.xml文件來自:

機器人:launchMode = 「singleInstance」

機器人:launchMode = 「singleTask」

所以,我再次將其更改爲singleInstance,現在工作正常。

0

這是我新的Facebook SDK 4.1的集成工作。 首先,你需要初始化SDKin 4.1 ///

/** if face book SDK is not initialized then initialized.*/ 
    if(!FacebookSdk.isInitialized()) 
      FacebookSdk.sdkInitialize(BaseActivity.this);  

現在你需要回調馬槽

/** create face book callback factory.*/ 
    if(null == callbackManager) 
    callbackManager = CallbackManager.Factory.create(); 

這些回調。

public final FacebookCallback<LoginResult> _mcallbackLogin = new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 

      if(loginResult.getAccessToken() != null){ 
       Log.i("TAG", "LoginButton FacebookCallback onSuccess token : "+ loginResult.getAccessToken().getToken()); 
       GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphJSONObjectCallback() { 
        @Override 
        public void onCompleted(JSONObject object, GraphResponse response) { 
         if(null != object){ 
          Log.e("TAG", object.optString("name"),object.optString("first_name"),object.optString("email"),false).execute(); 
         } 
        } 
       }).executeAsync(); 
      } 
     } 

     @Override 
     public void onCancel() { 
      Log.e("TAG", "LoginButton FacebookCallback onCancel"); 
     } 

     @Override 
     public void onError(FacebookException exception) { 
      Log.e("TAG","Exception:: "+exception.getStackTrace()); 
     } 
    }; 

現在你需要寄存器回撥Facebook登錄按鈕

loginBtn.registerCallback(BaseActivity.callbackManager,_mcallbackLogin); 
4

嘗試

AccessToken.getCurrentAccessToken().getToken();

而是採用了toString()函數。