2010-12-15 3 views
1

Commençons aujourd'hui par certains développeurs en utilisant Facebook SDK et je ne peux pas comprendre la logique suivie pour lier les membres de l'objet expando aux champs dans les objets API Graph dans l'exemple ci-dessous qui a été prise de facebook C# SDK docs:Logique derrière le lien des membres ExpandoObject() et API FB Graph

public ActionResult RestFacebookPage() 
    { 
     FacebookApp app = new FacebookApp(); 
     dynamic parameters = new ExpandoObject(); 
     parameters.page_ids = "85158793417"; 
     parameters.method = "pages.getInfo"; 
     parameters.fields = "name"; 
     dynamic result = app.Api(parameters); 
     return View("FacebookPage", result); 
    } 

Je comprends les page_ids et les champs, mais pas pages.getInfo. Ce serait génial si quelqu'un pouvait m'éclairer ici et me dire où dans la documentation je peux trouver une référence qui me mène à ceci ....

Merci beaucoup!

Répondre

1

Je ne suis pas certain de comprendre ce que vous demandez, mais il existe un exemple assez parlant de traduction de php vers facebook-C# -sdk sur leur project page. Ensuite, vous pouvez simplement consulter la documentation officielle du développeur facebook directement. Si vous demandiez plus sur un type de question "comment est-ce implémenté", la meilleure façon de faire à mon avis est de faire une pause à la ligne contenant app.Api et à partir de là, il suffit de parcourir le code. Dans la méthode Api, il y a une vérification pour voir si le dictionnaire de paramètres contient une clé "méthode". S'il y en a, le sdk indique que l'appel est lié à l'ancien api de repos, pas au graphique api. Quelques cadres de pile faible, nous trouvons le code qui fait l'url:

 

protected virtual Uri GetUrl(string name, string path, IDictionary parameters) 
{ 
    Contract.Requires(!String.IsNullOrEmpty(name)); 
    Contract.Ensures(Contract.Result() != default(Uri)); 

    if (_domainMaps[name] == null) 
    { 
    throw new ArgumentException("Invalid url name."); 
    } 

    UriBuilder uri = new UriBuilder(_domainMaps[name]); 
    if (!String.IsNullOrEmpty(path)) 
    { 
    if (path[0] == '/') 
    { 
     if (path.Length > 1) 
     { 
     path = path.Substring(1); 
     } 
     else 
     { 
     path = string.Empty; 
     } 
    } 
    if (!String.IsNullOrEmpty(path)) 
    { 
     uri.Path = UriEncoder.EscapeDataString(path); 
    } 
    } 
    if (parameters != null) 
    { 
    uri.Query = parameters.ToJsonQueryString(); 
    } 
    return uri.Uri; 
} 
 

Vous devriez probablement pas dans cette méthode vous-même pour voir ce que les variables tiennent et il faut donner un sens pour vous. La source est toujours la meilleure documentation. J'espère que cela t'aides.