Ich integriere FacebookSDK 4.x Integration mit benutzerdefinierten UI und folgende Methode zum Anmelden und auch E-Mail-Berechtigung vom Benutzer erhalten.Wie kann ich die E-Mail-Berechtigung mit dem Facebook iOS SDK 4.x "erneut anfordern"?
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");
}
}
}];
Das funktioniert gut, es sei denn, der Benutzer verweigert den Zugriff auf "E-Mail". Ich sehe in den FacebookSDK-Dokumenten, dass ich den Zugriff auf die E-Mail-Adresse des Benutzers erneut anfordern kann. Nach den FB-Dokumentation: wie in diesem
link gegebenIf 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.
Aktivieren Flow Re-Authentifizierung
Während gewählten Login zeigten wir Ihnen, wie Sie die Anmeldung Dialog und OAuth verwenden, jemanden zu authentifizieren und fordern Sie Berechtigungen von ihnen. Um erneut zu authentifizieren, können Sie diese Schritte mit zusätzlichen Parameter verwenden, um es zu zwingen:
auth_type: Dieser Parameter gibt die angeforderten Authentifizierungs Funktionen (als kommagetrennte Liste). Gültige Optionen sind: https - überprüft das Vorhandensein einer sicheren Sitzung Facebook und bittet um erneute Authentifizierung, wenn es nicht vorhanden reauthenticate ist - bittet die Person erneut authentifizieren bedingungslos
auth_nonce: includes an app generated alphanumeric nonce which can be used to provide replay protection. See how to check an auth_nonce
für mehr.
Hier ist ein Beispiel, das JavaScript SDK, das unter Verwendung von erneute Authentifizierung unter Verwendung eines von auth_type reauthenticate löst:
FB.login (function (response) { // Ursprüngliche FB.login Code}, {auth_type : 'reauthenticate'})
Beachten Sie, dass der Körper der Antwort den auth_type Parameter enthält, die Sie zum Beispiel angegeben,:
access_token = USER_ACCESS_TOKEN & abläuft = SECONDS_UNTIL_TOKEN_EXPIRES & auth_type =
reauthenticate Wie gehe ich "auth_type = rerequest" auf Facebook-Servern über das iOS SDK? Gibt es dafür eine spezielle Methode?
Ich habe das gleiche Problem, aber wie hast du auth_type: 'request' übergeben? – joels
Eigentlich übergebe ich 're-request' nicht explizit an facebook, aber sobald Sie eingeloggt sind, rufen Sie erneut die Methode loginWithReadPermissions: @ [@ "email"] handler:^(FBSDKLoginManagerLoginResult * result, NSError * error) auf Nimm als 'erneut anfordern'. Erinnere dich einfach an diese Methode nach einiger Zeit, das ist es ja, aber du darfst die Abmelde-Methode nicht aufrufen, bevor du diese Methode erneut anrufst. hoffe, es wird dir helfen :) – Ryuk
also, wie die Benutzer E-Mail bekommen, wenn Sie es verwenden möchten? – ArdenDev