2013-08-19 12 views
31

Używam pakietu SDK Facebooka, ale chcę utworzyć album ze zdjęciami, ale dostaję ACCESS_TOKEN_REMOVED w sesji.token AccessToken: ACCESS_TOKEN_REMOVED w systemie Facebook Android SDK

Getting to w sesji

{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}

Kod.

/** 
* 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

Zestaw SDK nie rejestruje bezpośrednio tokena dostępu, dlatego widzisz ACCESS_TOKEN_REMOVED. Czy widzisz błąd z prośbą? –

+0

@MingLi Widzę ten błąd, gdy wykonywana jest metoda 'call'. Pomóż mi, dlaczego tak jest? – user2695306

+8

Nie trzeba sprawdzać "state == SessionState.CREATED_TOKEN_LOADED", w rzeczywistości jest to błędna kontrola. Wystarczy session.isOpened(). Mój poprzedni komentarz odnosi się do tego, że SDK NIE zapisze twojego tokenu dostępu w logcat dla celów bezpieczeństwa, dlatego widzisz ACCESS_TOKEN_REMOVED (zamiast prawdziwego tokena dostępu). –

Odpowiedz

0

wziąłem ten sam problem:/

Można sprawdzić:

  1. Czy AppID prawidłowe?
  2. Czy keyhash został zarejestrowany w centrum aplikacji Facebook?
  3. Czy nazwa przestrzeni nazw aplikacji/pakietu jest zgodna z plikiem manifestu? (na facebookowym centrum aplikacji)
  4. Czy aplikacja jest na żywo?

Jeśli wszystko jest w porządku I naprawdę nie wiem, jak ci pomóc ...

-2

Sprawdziłem wszystkie elementy, które Fernando powiedziane i dodać go

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

ja nie wiem, czy ta ostatnia linia rozwiązała problem lub była czymś przypadkowym.

Używam Facebook Android SDK 3.17 do Xamarin

Pozdrowienia z Argentyny Hernan www.hernanzaldivar.com

40

Jeśli dopiero widząc ACCESS_TOKEN_REMOVED w swoim dzienniku, upewnij się, że drukowanie session.getAccessToken().getToken(). W powyższym przykładzie, wymienić

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

z

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

To powinno być oznaczone jako poprawna odpowiedź. Facebook nie pozwala programistom na rejestrowanie "session.getAccessToken" bezpośrednio, ponieważ może to spowodować wycieki. Ktokolwiek napotyka ten sam problem, powinien również sprawdzić to, aby uzyskać więcej informacji: [http://stackoverflow.com/a/29544390/2754871](http://stackoverflow.com/a/29544390/2754871) – modu

33

sam problem, że mi stoi z ostatnich 2 dni i wreszcie mogę o tym wiedzieć. Facebook SDK nie loguje tokenów dostępu do logcat (aby uniknąć przeciekania tokenów użytkownika za pośrednictwem logu, jak podano w decashription).

Wystarczy dodać te linie po FacebookSdk.sdkInitialize() Polecam to zrobić tylko w trybie debugowania:

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

to działa! uratowałeś mnie. –

+0

Jeśli opublikuję aplikację w Sklepie Play, to zadziała, czy nie? –

+0

@ChiragSavsani to zadziała na pewno, ponieważ działało też w moim przypadku :) –

0

Musisz włączyć facebook zalogować się na Firebase konsoli i dodać identyfikator aplikacji i facebook klucz tajny aplikacji i powinien działać dobrze

Powiązane problemy