Я использую пакет Microsoft.AspNet.Mvc.Facebook
NuGet. Я хотел бы обменять обычный токен для расширенного токена доступа (тот, который заменил разрешение offline_access).
Из Googling вокруг я нашел URL должен быть в таком формате:
https://graph.facebook.com/oauth/access_token?
client_id=[APP_ID]&
client_secret=[APP_SECRET]&
grant_type=fb_exchange_token&
fb_exchange_token=[EXISTING_ACCESS_TOKEN]
Поэтому я использую следующий код:
var longToken = await context.Client.PostTaskAsync("/oauth/access_token",
new
{
client_id = fbApp.AppId,
client_secret = fbApp.AppSecret,
grant_type = "fb_exchange_token",
fb_exchange_token = context.AccessToken
});
Это возвращает нуль. Нет ошибки или чего-то еще. Просто нулевое значение.
Edit: Также попробовал следующее, что также не сработало. Но GET
кажется логичным, чем POST
.
dynamic result = context.Client.Get("oauth/access_token",
new
{
client_id = fbApp.AppId,
client_secret = fbApp.AppSecret,
grant_type = "fb_exchange_token",
fb_exchange_token = context.AccessToken
});
var longToken = result.access_token as string;
Я успешно сделал это как запрос GET, а не POST :) Просто поместите необходимые параметры в URL-адрес и запросите его как запрос GET, и ответ возвращает токен долгосрочного доступа.
EDIT. Когда вы получите результат из этого, вы должны сначала разобрать строку запроса (я не уверен в С#, но, возможно, вы можете использовать эту ссылку: http://msdn.microsoft.com/en-us/library/ms150046(v= vs.110).aspx).
После этого попробуйте получить свойство access_token, и я понял это на своем конце. Я делал это в node.js, но, по сути, тот же поток.
C# SDK
. Вот почему я отметил этот вопрос с помощьюC#
иasp.net-mvc
. Я не получаю ответ. Это проблема.