2013-08-19 158 views
31

我正在使用Facebook SDK,但我想創建相冊,但我在會話中獲得了ACCESS_TOKEN_REMOVED。AccessToken令牌:Facebook的Android SDK中的ACCESS_TOKEN_REMOVED

在會議

{Session state:OPENED, token:{AccessToken token:ACCESS_TOKEN_REMOVED permissions:[read_stream, manage_friendlists, read_mailbox, status_update, photo_upload, video_upload, sms, create_event, rsvp_event, email, xmpp_login, create_note, share_item, publish_stream, ads_management, read_insights, read_requests, manage_notifications, read_friendlists, manage_pages, publish_actions, user_birthday, user_religion_politics, user_relationships, user_relationship_details, user_hometown, user_location, user_likes, user_activities, user_interests, user_education_history, user_work_history, user_online_presence, user_website, user_groups, user_events, user_photos, user_videos, user_photo_video_tags, user_notes, user_checkins, user_about_me, user_status, basic_info]}, appId:458921577539675}

代碼聞聽此事。

/** 
* Connect to facebook using Facebook SDK. 
*/ 
public void connectToFacebook() { 
    Session session = Session.getActiveSession(); 
    if(session == null || session.isClosed()) { 
     Session.openActiveSession((Activity)context, true, new StatusCallback() { 
      @Override 
      public void call(Session session, SessionState state, Exception exception) { 
       if(session.isOpened() && state == SessionState.CREATED_TOKEN_LOADED) { 
        Log.v(GlobalVars.TAG, "Token::" + session.getAccessToken()); 
        Request.executeMeRequestAsync(session, new GraphUserCallback() { 
         @Override 
         public void onCompleted(GraphUser user, Response response) { 
          if(response != null) { 
           Log.v(GlobalVars.TAG, "Response::" + response); 
           Log.v(GlobalVars.TAG, "Response::" + user.getFirstName() + ":::" + user.getLastName()); 
          } 
         } 
        }); 
       } 
      } 
     }); 
    } 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); 
} 
+0

SDK不會直接記錄您的訪問令牌,這就是您看到ACCESS_TOKEN_REMOVED的原因。您的請求是否出現錯誤? –

+0

@MingLi當'call'方法執行時,我看到這個錯誤。請幫助我爲什麼如此? – user2695306

+8

您不需要檢查「state == SessionState.CREATED_TOKEN_LOADED」,實際上,這是錯誤的檢查。只要session.isOpened()就夠了。我之前的評論是指爲了安全起見,SDK不會在logcat中記錄您的訪問令牌,這就是您看到ACCESS_TOKEN_REMOVED(而不是真正的訪問令牌)的原因。 –

回答

0

我採取了同樣的問題:/

您可以檢查:

  1. 是APPID是否正確?
  2. keyhash在Facebook應用中心註冊了嗎?
  3. 應用程序名稱空間/包名稱是否與您的清單文件相匹配? (在facebook應用中心)
  4. 應用程序是否存在?

如果一切是正確的我真的不知道該怎麼幫你...

-2

我檢查了所有的項目,費爾南多表示,並將其添加

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

我不知道這最後一行是解決了這個問題,或者它是隨機的。

我使用Facebook的Android SDK中3.17 Xamarin

問候來自阿根廷 埃爾南 www.hernanzaldivar.com

40

如果你只是看到你的日誌ACCESS_TOKEN_REMOVED,請確保您打印session.getAccessToken().getToken()。在上面的例子中,與我從最後2天面臨最後我瞭解這個

Log.v(GlobalVars.TAG, "Token::" + session.getAccessToken().getToken()); 
+2

這應該被標記爲正確的答案。 Facebook不允許開發者直接登錄「session.getAccessToken」,因爲它可能會導致泄漏。無論誰面臨同樣的問題,也應該檢查這個更多的信息:[http://stackoverflow.com/a/29544390/2754871](http://stackoverflow.com/a/29544390/2754871) – modu

33

同樣的問題取代

Log.v(GlobalVars.TAG, "Token::" + session.getAccessToken()); 

。 Facebook SDK不會將訪問令牌記錄到logcat(以避免在decsription中通過日誌泄漏用戶令牌)。

只需添加這些行後FacebookSdk.sdkInitialize(),我會建議你只在調試模式下做到這一點:

if (BuildConfig.DEBUG) { 
    FacebookSdk.setIsDebugEnabled(true); 
    FacebookSdk.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS); 
} 
+0

它的工作原理!你救了我。 –

+0

如果我在Play商店發佈應用程序,這將工作與否? –

+0

@ChiragSavsani這將工作肯定,因爲它也適用於我的情況:) –

0

您必須啓用Facebook在上火力地堡控制檯,並添加Facebook應用程序ID和應用密鑰並且應該可以正常工作