Console App Facebook offline_access erweiterten Berechtigungen und Facebook C # SDK verwendet

StackOverflow https://stackoverflow.com/questions/4458613

  •  10-10-2019
  •  | 
  •  

Frage

Ich bin ein Flüchtling aus dem alten Facebook Developer Toolkit meine App auf den neuer Facebook C # SDK zu portieren. Ich habe die MVC Web-App Seite meiner Lösung habe gearbeitet, aber ich habe auch eine Konsolenanwendung, die ich im Batch als Teil meiner Gesamtlösung führen. Ich erhalten die offline_access Erlaubnis für alle meine Benutzer erweitert und speichern die nicht ablaufenden Sitzungsschlüssel für die spätere Verwendung in meiner Konsole app.

Mit dem Facebook Developer Toolkit konnte ich ein Connect-Sitzung und REST-API mit meinem API Key, API Geheimnis, und die gespeicherte Benutzersitzungsschlüssel und machen Facebook api Anrufe spin up.

In der Facebook C # SDK die Nicht-Web-Proben scheinen Aufspringen eine Art von Browser-Steuerung für die interaktive Benutzeranmeldung zu verlassen. Das wird nicht funktionieren für eine Konsole Batch-Anwendung Verarbeitung Benutzer offline.

Ich habe diese weit gekommen:

string oAuthAccessToken = "{access token}"
var app = new Facebook.FacebookApp(oAuthAccessToken );

// now I can make api calls like this:
dynamic currentPermissionsJson = new ExpandoObject();
currentPermissionsJson = app.Query(string.Format("SELECT publish_stream, offline_access, email from permissions where uid = {0}", {userid}));
var currentPermissions = ((JsonArray)currentPermissionsJson)[0] as IDictionary<string, object>;

und wir gehen weg.

Ich bin gerade stecken, wie ich meinen vorhandenen gespeicherten Sitzungsschlüssel zu Facebook OAuth Zugriffstoken zu konvertieren. Ich kann sehen, wie ich POSTs an https://graph.facebook.com/oauth/exchange_sessions mit params wie

client_id={my app id}
&client_secret={my app secret}
&sessions={previously stored session keys}

und erhält das Zugriffstoken zurück in der Antwort.

Aber ich denke, das SDK eine Methode, dies zu tun für mich anbieten müssen. Oder geht das?

War es hilfreich?

Lösung

Leider haben wir nicht alle Helfer haben in der aktuellen Facebook C # SDK die Zugriffstoken auszutauschen. Ich habe ein Problem geschaffen, und ich werde versuchen, es kurz in dorthin zu gelangen. http://facebooksdk.codeplex.com/workitem/5788

Im Moment habe ich diese auf. Probieren Sie es aus und lassen Sie mich wissen, wie es funktioniert:

public class FacebookOAuth
{

    public static IEnumerable<ExchangeSessionResult> ExchangeSessions(string appId, string appSecret, params string[] sessionKeys)
    {
        WebClient client = new WebClient();
        var dict = new Dictionary<string, object>();
        dict.Add("client_id", appId);
        dict.Add("client_secret", appSecret);
        dict.Add("sessions", String.Join(",", sessionKeys));
        string data = dict.ToJsonQueryString();
        string result = client.UploadString("https://graph.facebook.com/oauth/exchange_sessions", data);
        return Newtonsoft.Json.JsonConvert.DeserializeObject<ExchangeSessionResult[]>(result);
    }

}

public class ExchangeSessionResult
{

    [Newtonsoft.Json.JsonProperty("access_token")]
    public string AccessToken { get; set; }

    [Newtonsoft.Json.JsonProperty("expires")]
    public string Expires { get; set; }

}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top