获得永久的Facebook访问令牌

时间:2012-09-12 06:19:30

标签: c# facebook facebook-c#-sdk

我使用JSDK为我的脸书应用验证用户身份。 我正在获取访问令牌,但它会在半小时内到期。 那么如何才能获得长期访问令牌?

我使用的代码是:

 var fb = new FacebookClient();
 Dictionary<string,Object> sParams=new Dictionary<string,Object>();
 sParams.Add("client_id",My_App_ID);
 sParams.Add("client_secret",My_App_Secret);
 sParams.Add("grant_type","fb_exchange_token");
 sParams.Add("fb_exchange_token",Short_lived_accessToken);
 dynamic result = fb.Get("oauth/access_token",sParams);
 fb.AccessToken = result.access_token;

但它在行dynamic result = fb.Get("oauth/access_token",sParams);

给我错误无效的JSON字符串

我在这里做错了什么?

2 个答案:

答案 0 :(得分:4)

使用此代码:

        var client = new FacebookClient(Short_lived_accessToken);

        dynamic result = client.Post("oauth/access_token", new
        {
            client_id = My_App_ID,
            client_secret = My_App_Secret,
            grant_type = "fb_exchange_token",
            fb_exchange_token = Short_lived_accessToken
        });

        Response.Write("Long live access token: [" + result.access_token + "]");

希望它有所帮助。

答案 1 :(得分:1)

您将从端点获得的返回只是不是 JSON,而只是表单中的纯文本

access_token=new_long-lived_access_token&expires=5130106

所以你必须以某种方式(?)告诉你的应用程序,结果不是JSON;或者你可能必须使用不同的方法来发出请求,如果FacebookClient :: Get总是希望答案是JSON。