Я - беженец из старого набора инструментов разработчика Facebook, портирующего мое приложение на более новый SDK Facebook C #. Я разработал сторону веб-приложения MVC для моего решения, но у меня также есть консольное приложение, которое я запускаю в пакетном режиме как часть моего общего решения. Я получаю расширенное разрешение offline_access для всех моих пользователей и сохраняю сеансовый ключ с неограниченным сроком действия для последующего использования в моем консольном приложении.
С помощью инструментария для разработчиков Facebook мне удалось раскрутить API-интерфейс Connect Session и REST с помощью моего API-ключа, API-ключа и сохраненного пользовательского сеансового ключа и совершать вызовы API-интерфейса Facebook.
В Facebook C # SDK не-сетевые образцы, кажется, полагаются на то, что для управления интерактивным входом в систему используется какой-то элемент управления браузером. Это не будет работать для пользователей консольной пакетной обработки приложений в автономном режиме.
У меня так далеко:
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>;
и понеслось.
Я просто застрял в том, как преобразовать мои существующие сохраненные сеансовые ключи в токены доступа OAuth Facebook. Я вижу, как я могу построить POST к https://graph.facebook.com/oauth/exchange_sessions с такими параметрами, как
client_id={my app id}
&client_secret={my app secret}
&sessions={previously stored session keys}
и верните маркер доступа в ответ.
Но я думаю, что SDK должен предложить какой-то способ сделать это для меня. Или это?