Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 扩展Facebook令牌_C#_Asp.net Mvc_Facebook - Fatal编程技术网

C# 扩展Facebook令牌

C# 扩展Facebook令牌,c#,asp.net-mvc,facebook,C#,Asp.net Mvc,Facebook,我使用的是Microsoft.AspNet.Mvc.FacebookNuGet软件包。我想用常规令牌交换扩展访问令牌(替换脱机访问权限的令牌) 通过谷歌搜索,我发现URL应采用以下格式: https://graph.facebook.com/oauth/access_token? client_id=[APP_ID]& client_secret=[APP_SECRET]& grant_type=fb_exchange_token

我使用的是
Microsoft.AspNet.Mvc.Facebook
NuGet软件包。我想用常规令牌交换扩展访问令牌(替换脱机访问权限的令牌)

通过谷歌搜索,我发现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
                    });
这将返回空值。没有任何错误。只是一个空值

编辑:还尝试了以下操作,但同样无效。但无论如何,
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请求进行请求,响应将返回长期访问令牌

编辑 当您从中得到结果时,应该首先解析查询字符串(我在C#中不确定,但也许您可以使用以下链接:)


在那之后,我尝试获取access_token属性,我就得到了它。虽然我是在node.js中完成的,但基本上是相同的流程。

我使用的是
C#SDK
。这就是为什么我用
C
asp.netmvc
标记这个问题。我没有得到回应。这就是问题所在。与其使用SDK,不如定期进行HTTP GET调用,看看是否有响应?