2013-01-04 16 views
32

Ho un app PhoneGap che viene eseguito su entrambi iOS e Android. L'app ha una funzione di accesso a Facebook che ha funzionato fino a pochi giorni fa. Alcuni dei nostri beta tester hanno segnalato un errore "L'operazione non può essere completata com.facebook.sdk errore 2". I dispositivi di questi tester variano: iPhone 5, iPhone 4s, iPod Touch, iOS 5.1.1 e iOS 6.0.errore com.facebook.sdk 2 su iOS

Usiamo l'ultimo SDK di Facebook e un plugin login PhoneGap Facebook (https://github.com/davejohnson/phonegap-plugin-facebook-connect/).

Ho fatto qualche ricerca e ho trovato i seguenti motivi per cui potrebbe verificarsi questo errore:

  • BundleIdentifier e BundleURLName nel mio file Info.plist non corrispondono al Bundle ID sotto nativa iOS nelle impostazioni della mia app di Facebook.
  • L'app è ancora in modalità sandbox
  • L'app è disattivata nelle impostazioni di Facebook (impostazioni del dispositivo -> Facebook -> consenti a queste app di utilizzare il proprio account).
  • iOS 6.0 non consente per la richiesta di permessi di lettura e scrittura allo stesso tempo (non so se ho questo diritto).

Quello che segue è il caso:

È un errore molto incoerente (nel mio caso). Posso solo riprodurre l'errore me stesso se spengo l'app in "Consenti a queste app di utilizzare il tuo account" (nel mio caso l'app è elencata lì), ma posso facilmente correggere l'errore consentendo di nuovo l'app. Al momento la maggior parte dei tester non ha questo bug (più), ma l'errore rimane su un iPod (dove l'app non è elencata in "Consenti a queste app di utilizzare il tuo account").

Qualcuno ha qualche idea del perché sto avendo questo bug?

+1

Questo di solito accade con errori oAuth. Accade solo quando stai richiedendo permessi di lettura o permessi di scrittura. Spero che tu non li richieda entrambi allo stesso tempo. Inoltre, fallisce solo su auth utilizzando l'app Facebook o le impostazioni native iOS6 o m-site. –

+0

No, non chiedo permessi di lettura e pubblicazione allo stesso tempo. Non sono sicuro della seconda domanda. Come posso scoprirlo? – saltandpepper

risposta

17

Risulta: un errore di com.facebook.sdk 2 può tradursi in una serie di cose. Sto cercando una specie di tabella di conversione degli errori di Facebook SDK, ma non riesco a trovarne una. Nel mio caso: L'errore com.facebook.sdk 2 è accaduto perché la connessione è scaduta. Gli utenti che hanno ricevuto questo errore hanno avuto una brutta rete/connessione WiFi.

abbiamo implementato un sistema di registrazione degli errori, che registra i dettagli dell'errore ogni volta che un errore è accaduto durante l'accesso in Facebook. In questi registri potremmo vedere un errore com.facebook.sdk 2 che si verificava parecchio, ma veniva risolto ogni volta che l'utente tentava di accedere di nuovo dopo pochi secondi.

Potrebbe essere dovuto alla mia impossibilità di trovare la documentazione giusta, ma ero e sono ancora abbastanza frustrato per la vaghezza di questi errori SDK. Vi è molta documentazione sulla richiesta di autorizzazione (che può risultare nell'errore 2 com.facebook.sdk), ma a quanto pare questo errore può essere causato da più cose. Sarebbe bello vedere questo documento anche da qualche parte.

+2

Mi sembra che il file FBError.h contenga l'enum che definisce i codici di errore di Facebook e l'identificatore di errore che corrisponde a 2 è FBErrorLoginFailedOrCancelled. – devdavid

+1

Bene, questo è un chiarimento. Ma ancora, che cosa causa un errore "FBErrorLoginFailedOrCancelled"? È ancora molto generale e non dice nulla su ciò che causa quell'errore. Quindi sono ancora dell'opinione che sia necessaria la documentazione di accompagnamento per trovare la fonte di questi errori. – saltandpepper

+7

Nel mio caso, questo errore si è verificato perché l'app era in modalità sandbox e l'account di prova che stavo utilizzando non era uno sviluppatore o un amministratore dell'app. –

3

Ho scoperto il motivo di questo errore per molto tempo, per quanto riguarda il funzionamento con il vecchio iOS 5.0 per la copertura di dispositivi più grandi. Ho appena ricevuto l'errore 400 tramite il debug della richiesta di Facebook. Quindi, alla fine, ho capito che il motivo era sconosciuto FBSessionDefaultAudience per FBSession (stava testando a 6.0+ e l'API nativa di Facebook mi ha dato un motivo di errore). E quando ho usato

+ (BOOL)openActiveSessionWithPublishPermissions:(NSArray*)publishPermissions 
           defaultAudience:(FBSessionDefaultAudience)defaultAudience 
            allowLoginUI:(BOOL)allowLoginUI 
           completionHandler:(FBSessionStateHandler)handler; 

questo errore è finalmente scomparso.

6

Questo è successo per un'app che stavo usando. Sono stato in grado di aggirarlo andando alle impostazioni del mio iPhone, selezionando Facebook, toccando il mio nome e facendo clic su "elimina account".

Successivamente ho potuto accedere con l'app senza problemi.

Sono tornato alle impostazioni | Facebook e ho ripresentato le mie credenziali.

L'app funziona ancora correttamente.

+0

Questo mi ha portato la parte migliore di 5 ore. Acclamazione amico. La cosa schifosa è che non è nemmeno una correzione "corretta" quindi non ho ancora idea di come gestire questo codice. Grazie per aver risolto gran parte del mal di testa, almeno amico! :) – SparkyRobinson

5

Ho avuto questo errore quando ho dimenticato di verificare l'app nativa iOS (nella pagina degli sviluppatori di Facebook) e ho digitato il mio ID pacchetto, che è lo stesso identificativo del pacchetto nel progetto Xcode. (incluso il nome del progetto alla fine.) Avevo anche l'impostazione nella pagina degli sviluppatori di Facebook che abilitava la modalità SandBox. Ho disabilitato anche la modalità Sandbox per ottenere questo lavoro.

+0

Come ho menzionato nella mia domanda nei punti 1 e 2, e 5 e 6, questo non era il caso. – saltandpepper

0

abbiamo avuto lo stesso problema. A quanto pare, la ragione è davvero in timeout sul lato FB, e specialmente se si verifica questo timeout mentre la pagina "Login FB" è ancora attiva e l'utente fa clic su "annulla". In tal caso, l'errore 2 viene sempre risintonizzato. Quindi, se vuoi ripetere e testare questa situazione, fai clic sul pulsante "Annulla" mentre ti connetti su FB.

0

Nel mio caso ho creato l'app con il mio account aziendale e ho dimenticato di aggiungere il mio profilo personale con un ruolo di sviluppatore. Dopo aver capito che tutto è andato liscio.

Cheers.

1

provare per primo:

Go to Settings app -> Facebook -> Your App -> Switch it off and back on again. 

questo ha funzionato per me, e non mi ha richiedono di eliminare effettivamente il conto fb e riconnettersi come @ seans23 suggerisce. Se non avesse funzionato, l'avrei provato dopo, ma a quanto pare ha fatto un trucco nel reimpostare lo stato.

1

Questo approccio ha funzionato per me. (IOS 8)

Il contesto:

  • FB "Log in" non si è aperta app FB né FB in Safari
  • Popped FB SDK err. 2.
  • "La mia app" non è stata mostrata nelle impostazioni FB per poter essere abilitata all'uso.

La soluzione:

  • Cancella Safari Web Cache (potrebbe essere opzionale)
  • Rimuovere app Facebook
  • Rimuovere Facebook Messenger
  • Installa app e accedere

L'idea è di rimuovere entrambi l'app di Facebook e il Messenger.

1

Per me il motivo era che stavo testando la mia app sul simulatore. Volevo condividere una foto e la finestra di dialogo non è venuta fuori così ho collegato il mio iPhone e tutto è andato liscio dopo!

+0

Quello che ho imparato da questo thread è che l'errore 2 può significare qualsiasi cosa. Anche questa è stata la causa nel mio caso. È interessante notare che sono in grado di accedere, ma ho riscontrato questo errore nel tentativo di condividere. – Robert