2014-11-26 10 views
8

Sto lavorando con Unity 4.6 e Facebook Unity SDK 6.0.Facebook-unity-sdk che non utilizza SSO nativo iOS

Su Android le cose sembrano gonfiarsi, ma su iOS non sembra che utilizzi il SSO nativo di Facebook. Ritorna costantemente al login basato su browser, che emana davvero un'atmosfera poco professionale.

Ho provato questo su dieci diversi dispositivi, tutti utilizzando entrambi i certificati dello sviluppatore.

E Ho passato attraverso la seguente lista di controllo:

  • XCode a correre recieves errori o registri che devono indicare qualcosa di sbagliato, ma ancora usa il vecchio "browserbased" soluzione di accesso.
  • Questo vale anche quando utilizzo la scena di esempio contenuta nell'SDK.
  • L'app è abilitata per SSO nella console di sviluppo di Facebook e gli ID bundle corrispondono.
  • Lo sceme di URL FBXXXXXXXXX si trova nel file info.plist e viene visualizzato correttamente in XCode.
  • Anche la chiave FacebookAppID in info.pList è impostata e utilizza l'id numerico di Facebook.
  • In Facebook, l'app è aperta al pubblico, ha l'e-mail di contatto richiesta e il bundle iOS è configurato.

Ho provato con entrambi gli account di sviluppatore, amministratore e "straniero", e non uno solo poteva ottenere il login nativo su Facebook di iOS.

Qualcuno ha incontrato questo? La maggior parte dei casi simili che ho trovato hanno più di un anno e non si applica a questo.

+0

Come stai chiamando FB.Login? La tua app è configurata per avere più di un ID app FB? – shacharg

risposta

1

In Facebook SDK 7.2 cambiamento shareDialogMode in Unity se stessa in MobileFacebook.cs enter image description here

+0

Sono così felice che l'abbiano spostato :) –

1

Per ottenere l'accesso nativo a Facebook su iOS, individuare il file FbUnityInterface.mm (Asset/Facebook/Editor/iOS) e individuare il metodo -(void)login:(const char *)scope.

In questo metodo replace:

[self.session openWithBehavior:FBSessionLoginBehaviorWithFallbackToWebView] 

con questo:

[self.session openWithBehavior:FBSessionLoginBehaviorUseSystemAccountIfPresent] 

Facebook Unity SDK per default non usa iOS native comportamento di registrazione, che è un po 'strano.

Ci sono un paio di FBSessionLoginType comportamenti, descritti in FBSession.h che potrebbero essere trovati nel FacebookSDK così:

typedef enum { 
    /*! Attempt Facebook Login, ask user for credentials if necessary */ 
    FBSessionLoginBehaviorWithFallbackToWebView  = 0, 
    /*! Attempt Facebook Login, no direct request for credentials will be made */ 
    FBSessionLoginBehaviorWithNoFallbackToWebView = 1, 
    /*! Only attempt WebView Login; ask user for credentials */ 
    FBSessionLoginBehaviorForcingWebView    = 2, 
    /*! Attempt Facebook Login, prefering system account and falling back to fast app switch if necessary */ 
    FBSessionLoginBehaviorUseSystemAccountIfPresent = 3, 
    /*! Attempt only to login with Safari */ 
    FBSessionLoginBehaviorForcingSafari = 4, 
} FBSessionLoginBehavior; 
+0

Questa è una risposta corretta, Facebook ha spostato questo in classi C# –

+0

Buono a sapersi - la mia risposta è stata una soluzione solo funzionante nel momento in cui è stata posta la domanda - quindi è corretto per quella versione dell'FB SDK. – kreys