2014-07-01 2 views
0

J'ajoute la possibilité de partager un article sur LinkedIn dans une application iOS 7 en utilisant oauth2. J'ai obtenu l'authentification et ai le jeton d'accès. La documentation semble être assez claire à ce sujet, mais c'est étrange, pour poster, les choses deviennent plutôt vagues. Je sais que je poste ici: http://api.linkedin.com/v1/people/~/shares en ajoutant le jeton. Mais chaque exemple a juste le même code en utilisant OAMutableRequest, en construisant le dictionnaire, etc. mais ils n'expliquent jamais ce que c'est, comment incorporer cette bibliothèque ou quoi que ce soit, c'est juste étrange. Est-ce la meilleure pratique acceptée, la bibliothèque n'a pas été mise à jour en 3 ans donc il a des erreurs pour l'arc et d'autres choses. Tous les exemples de code mentionnent la même propriété «consommateur» sans aucune discussion sur la façon dont ou pourquoi cela est nécessaire. Je n'arrive pas à trouver comment vous construisez la demande de publication avec les paramètres que LinkedIn doit afficher sur le site. OAMutableRequest est-il le seul moyen? Si oui, comment les gens l'ont-ils mise à jour pour fonctionner? Merci beaucoup!Comment utiliser LinkedIn Partager Api dans iOS 7

Répondre

7

Après récupérer votre jeton d'accès, vous pouvez utiliser AFNetworking pour une requête POST comme cet exemple le code:

NSString *stringRequest = @"https://api.linkedin.com/v1/people/~/shares?oauth2_access_token=ACCESS_TOKEN&format=json"; 

//Request parameter on a dictionary (keys in camel case) 
NSDictionary *update = [[NSDictionary alloc] initWithObjectsAndKeys: 

        [[NSDictionary alloc] initWithObjectsAndKeys: @"anyone",@"code",nil], @"visibility", 
        @"comment to share", @"comment", 
        [[NSDictionary alloc] initWithObjectsAndKeys:@"description share", @"description", 
                   @"link_url", @"submittedUrl", 
                   @"title share",@"title", 
                   @"image_url",@"submittedImageUrl",nil], 
        @"content",nil]; 

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
AFJSONRequestSerializer *requestSerializer = [AFJSONRequestSerializer serializer]; 
[requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
manager.requestSerializer = requestSerializer; 

[manager POST:stringRequest parameters:update success:^(AFHTTPRequestOperation *operation, id  responseObject) { 
NSLog(@"result: %@", responseObject); 
completionBlock(YES, responseObject, nil); 

} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 

    DDLogError([error localizedDescription]); 
    completionBlock(NO, nil, error); 
}]; 

Important: les clés du dictionnaire sont en cas de chameau selon API Linkedin.

Dans le linkedin cas donnent une mauvaise demande (erreur 400), une autre façon de créer le dictionnaire est:

NSMutableDictionary *update = [[NSMutableDictionary alloc] init]; 
    if(message) 
    { 
     //Set visibility 
     NSDictionary *visibility = [[NSDictionary alloc] initWithObjectsAndKeys:@"anyone", @"code", nil]; 
     [update setObject:visibility forKey:@"visibility"]; 

     //Set comment 
     [update setObject:message forKey:@"comment"]; 

     //Set content or append imageUrl/postUrl to message to share 
     NSMutableDictionary *content = [[NSMutableDictionary alloc] init]; 

     if(postUrl) 
      [content setObject:imageUrl forKey:@"submittedUrl"]; 

     if(imageUrl) 
      [content setObject:imageUrl forKey:@"submittedImageUrl"]; 

     if(postUrl || imageUrl) 
      [update setObject:content forKey:@"content"]; 
    } 
+0

Salut, j'ai implementd comme vous le dites, mais je reçois l'erreur 400 peut vous me aider Échec de la demande: mauvaise demande (400) – 08442

+0

général, cette erreur se produit par une mauvaise configuration du dictionnaire utilisé pour les paramètres de l'appel api. Essayez de ne définir que les touches _ "comment" _ et _ "visibility" _. – Andr3a88

+0

alors la réponse nulle est venue en réglant seulement les clés "comment" et "visibilité" mais nous voulons partager le texte et le lien. – 08442

Questions connexes