8
votes

Querifier les données d'utilisateur Facebook via un nouveau cadre social IOS6

J'essaie d'interroger des informations sur un utilisateur utilisant la nouvelle API d'intégration Facebook d'IOS 6. C'est le code que j'utilise, qui est essentiellement identique à ce qu'ils ont démontré à la WWDC:

{
NSDictionary *parameters = @{};
NSURL *url = [NSURL URLWithString:@"https://graph.facebook.com/me"];
SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeFacebook
                                        requestMethod:SLRequestMethodGET
                                                  URL:url
                                           parameters:parameters];
request.account = self.account;
[request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
    NSLog(@"Facebook request received, status code %d", urlResponse.statusCode);
    NSString *response = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
    NSLog(@"Response data: %@", response);
    dispatch_async(dispatch_get_main_queue(), ^{

    });
}];
}


1 commentaires

Avez-vous reçu la réponse ?? Comme IOS 6 est libéré.


6 Réponses :


5
votes

Ajoutez votre jeton d'accès actif dans Paramete comme

NSDictionary *parameters = [NSDictionary dictionaryWithObject:@"PUT_ACCESS_TOKEN_HERE" forKey:@"access_token"];


1 commentaires

Comment obtenez-vous cette clé d'accès dans le code? Ou proposez-vous mettre un code d'accès réel là-bas? On dirait que les codes d'accès expirent de sorte que cela ne serait pas une bonne option.



0
votes

J'ai eu le même message d'erreur, je l'ai résolu en enregistrant mon compte après le renouvelement des informations d'identification.


0 commentaires

2
votes

J'ai rencontré le même problème et j'ai trouvé la solution de contournement:

NSString *uid = [NSString stringWithFormat:@"%@", [[self.account valueForKey:@"properties"] valueForKey:@"uid"]] ;                
NSURL *url = [NSURL URLWithString:[@"https://graph.facebook.com" stringByAppendingPathComponent:uid]];


1 commentaires

Le problème était dans des paramètres d'application incorrects sur FB. J'ai changé de paramètres selon ce message Stackoverflow.com/Questtions/12644229/... et il résolut le problème.



0
votes

Assurez-vous que votre (ACAccount *) FacebookCompount (ou dans votre cas Self.Account) L'objet est fort et vous le définissez correctement tout en obtenant des autorisations.


0 commentaires

1
votes

OK Voici comment je fais cette intégration avec iOS 6 et que je souhaite ce que je veux de Facebook:

in appdelegate je fais ceci: p> xxx pré>

et dans mon mode de vue où je veux récupérer des informations sur moi-même ou mes amis, je le fais (REMARQUE: Ceci est un test, il s'agit donc de nombreuses autorisations!): p> xxx pré>

alors dans " PRESENTPOSTOPTIONS "Je fais ceci (dans cet exemple j'essaie de récupérer quelque chose de mon ami): P>

- (void)presentPostOptions
{

    [[FBRequest requestForMyFriends] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error)

     {

         if (!error) {

NSArray *data = [user objectForKey:@"data"];
             NSLog(@"%d", [data count]);
             for (FBGraphObject<FBGraphUser> *friend in data) {
                 NSLog(@"%@", [friend first_name]);
                 NSLog(@"%@", [friend last_name]);
                 NSLog(@"%@", [friend id]);
                 //make sure you have FBProfilePictureView outlet in your view
                 //otherwise skip the profile picture!
                 self.fbProfilePic.profileID = @"you'r friend's profile.id";

             }
         }
         else
         {
             NSLog(@"error");
             //  [self didFailWithError:error];
         }
     }];


0 commentaires

0
votes

La réponse est simple

dans la vue ViewDiDload () Utilisation: p> xxx pré>

et la fonction - (vide) FacebookProfile P>

NSDictionary *param=[NSDictionary dictionaryWithObjectsAndKeys:@"picture,id,name",@"fields", nil];

SLRequest *profileInfoRequest= [SLRequest requestForServiceType:SLServiceTypeFacebook requestMethod:SLRequestMethodGET URL:url parameters:param];
profileInfoRequest.account= facebookAccount;


[profileInfoRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
    NSLog(@"Facebook status code is : %ld", (long)[urlResponse statusCode]);

    if ([urlResponse statusCode]==200) {

        NSDictionary *dictionaryData= [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves error:&error];



    } else {

    }
}];


}


0 commentaires