如何获得"用户"使用Facebook C#SDK访问Web API中的令牌?

时间:2017-04-05 16:44:48

标签: c# facebook facebook-graph-api asp.net-web-api

我正在开发一个Web API来处理来自Facebook的实时更新(Lead信息)以与我的CRM集成。 在WEB API POST请求中,我能够捕获leadID,但是当我通过调用FB.Get(LeadID)获取leadinfo时会出现问题。要制作一个Graph API GET请求(对于潜在客户信息),我需要有一个用户访问令牌,这是我一直在努力的地方。我在线查了几个帖子,但没有解决我的问题。

在我的示例实现中,GetLoginUrl(parameters)返回一个uri,当我在浏览器中请求uri时,我看到访问令牌在重定向的Uri中生成。但是如何以编程方式执行此操作?我试过以下

string FBAccessUrl =" https://graph.facebook.com/oauth/authorize?client_id=XXXXXXXXXXXX&response_type=token&redirect_uri=https://www.facebook.com/connect/login_success.html&#34 ;; var accessTokenRequest = System.Net.HttpWebRequest.Create(FBAccessUrl); HttpWebResponse response =(HttpWebResponse)accessTokenRequest.GetResponse();

然后我得到这个ResponseUri = {https://www.facebook.com/unsupportedbrowser}这不是我想要的。

有人可以帮助我了解如何使用Web API中的C#生成用户访问令牌(没有Facebook登录对话框)

[HttpPost]
[ActionName("Complex")]
public void PostComplex(RootObject root)
{
    FacebookClient fb = new FacebookClient();

    // Get leadID from the inital HTTP POST request 
    long leadgen_id = root.entry[0].changes[0].value.leadgen_id;
    string leadID = leadgen_id.ToString();

    // to get user access token
    dynamic parameters = new ExpandoObject();
    parameters.client_id = "XXXXXXXXXXXXXXX";
    parameters.redirect_uri = "https://www.facebook.com/connect/login_success.html";
    parameters.response_type = "token";

    // generate the login url
    Uri uri = fb.GetLoginUrl(parameters);

    // reuest the uri in browser and uri2 is the redirected uri
    Uri uri2 = "****************"
    string accesstoken = "";

    FacebookOAuthResult oauthResult;
    if (fb.TryParseOAuthCallbackUrl(uri, out oauthResult))
    {
        if (oauthResult.IsSuccess)
        {
                accesstoken = oauthResult.AccessToken;
        }
        else
        {
            var errorDescription = oauthResult.ErrorDescription;
            var errorReason = oauthResult.ErrorReason;
        }
    }

    fb.AccessToken = accesstoken;
    string me = fb.Get(leadID).ToString();

    // Then fetch required lead information 

}

0 个答案:

没有答案