在C#控制台应用程序中获取Facebook的用户访问令牌

时间:2019-12-14 15:46:10

标签: c# facebook-graph-api console-application

我想创建一个C#控制台应用程序以在FaceBook帐户墙上创建帖子。

我试图搜索如何获取此信息,但我所获得的只是有关Web应用程序中获取access_token的信息,我们可以在其中添加重定向URL:http://localhost

我正在使用以下代码在控制台应用程序中获取access_token。 但是我从下面的代码中得到的输出是:

{     “ access_token”:“ ***** | *************”,     “ token_type”:“承载者” } 哪个App_ID | App_Secret ..其中用户Access_token的长度应该很大。

是否可以使用控制台应用程序在Facebook帐户墙上发布内容?

    private const string FacebookApiId = "************";
    private const string FacebookApiSecret = "**************************";

    private const string AuthenticationUrlFormat =
         "https://graph.facebook.com/oauth/access_token?client_id={0}&client_secret={1}&grant_type=client_credentials&scope=manage_pages,offline_access,publish_stream";


    static void Main(string[] args)
    {

        string accessToken = GetAccessToken(FacebookApiId, FacebookApiSecret);

        PostMessage(accessToken, "My message");
    }

    static string GetAccessToken(string apiId, string apiSecret)
    {
        string accessToken = string.Empty;
        string url = string.Format(AuthenticationUrlFormat, apiId, apiSecret, "manage_pages,offline_access,publish_stream");

        WebRequest request = WebRequest.Create(url);

        WebResponse response = request.GetResponse();

        using (Stream responseStream = response.GetResponseStream())
        {
            StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
            String responseString = reader.ReadToEnd();

            NameValueCollection query = HttpUtility.ParseQueryString(responseString);

            accessToken = query["access_token"];
        }

        if (accessToken.Trim().Length == 0)
            throw new Exception("There is no Access Token");

        return accessToken;
    }

0 个答案:

没有答案