Sto integrando l'integrazione di FacebookSDK 4.x con l'interfaccia utente personalizzata e utilizzando il seguente metodo per accedere e ottenere l'autorizzazione e-mail dall'utente.Come "rerequest" permesso di posta elettronica utilizzando Facebook iOS SDK 4.x?
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithReadPermissions:@[@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error){
NSLog(@"%@",[error localizedDescription]);
}
else if (result.isCancelled){
NSLog(@"Cancled");
}
else
{
if ([result.grantedPermissions containsObject:@"email"])
{
NSLog(@"Granted all permission");
if ([FBSDKAccessToken currentAccessToken])
{
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)
{
if (!error)
{
NSLog(@"%@",result);
}
}];
}
}
else
{
NSLog(@"Not granted");
}
}
}];
Questo funziona perfettamente se l'utente non nega l'accesso a "email". Vedo nei documenti di FacebookSDK che posso richiedere nuovamente l'accesso all'e-mail dell'utente una volta. Secondo la documentazione FB: come indicato in questo link
If someone has declined a permission for your app, the login dialog won't let your app re-request the permission unless you pass auth_type=rerequest along with your request.
Abilitazione Riautenticazione
Durante il vostro flusso di accesso prescelta vi abbiamo mostrato come utilizzare il dialogo Login e OAuth per autenticare qualcuno e richiedere permessi da loro. Per ri-autenticazione, è possibile utilizzare questi stessi passi con ulteriori parametri per forzarlo:
auth_type: questo parametro specifica le caratteristiche di autenticazione richiesti (come un elenco separato da virgole). Le opzioni valide sono: https - verifica la presenza di una sessione sicura di Facebook e chiede per la ri-autenticazione se esso non è presente riautenticare - chiede alla persona una nuova autenticazione incondizionatamente
auth_nonce: includes an app generated alphanumeric nonce which can be used to provide replay protection. See how to check an auth_nonce
di più.
Ecco un esempio utilizzando l'SDK JavaScript che innesca ri-autenticazione utilizzando un auth_type di ripetere l'autenticazione:
FB.login (function (response) {// originale codice FB.login}, {auth_type : 'reauthenticate'})
Nota che il corpo della risposta contiene il parametro auth_type specificato, ad esempio:
access_token = USER_ACCESS_TOKEN & scade = SECONDS_UNTIL_TOKEN_EXPIRES & auth_type = reauthenticate
Come faccio a passare "auth_type = rerequest" ai server di Facebook tramite l'SDK per iOS? C'è un metodo speciale per questo?
Ho lo stesso problema, ma come è passato auth_type: 'rerequest'? – joels
In realtà non sto passando "ri-richiesta" a Facebook in modo esplicito, ma quando mai sei loggato e chiama [login logInWithReadPermissions: @ [@ "email"] gestore:^(FBSDKLoginManagerLoginResult * result, NSError * error) prendere come 'ri-richiesta'. quindi ricorda questo metodo dopo un po 'di tempo sì sì ma non devi chiamare il metodo di logout prima di chiamare questo metodo di nuovo. spero che ti possa aiutare :) – Ryuk
così come ottenere l'email degli utenti quando vuoi usarla? – ArdenDev