0

我正在使用 SDK 中的 6.0.10.0 版 Facebook.dll。我们正在测试我们的应用程序,我的一个用户无法登录。用户在使用 Chrome 的 iMac 上。

我使用的是服务器端流程,根本不使用 Facebook Javascript SDK。

这是我用来从 Facebook 检索数据的服务器端代码片段...(此代码直接来自某处的示例,因此归功于该作者:-))

var fbClient = new FacebookClient();
        var oauthResult = fbClient.ParseOAuthCallbackUrl(pRequestUri);

        string accessToken = null;
        DateTime expires = DateTime.Now;       

        // Exchange the code for an access token
        dynamic result = fbClient.Get("/oauth/access_token", new
        {
            client_id = ConfigurationManager.AppSettings["FacebookAppId"],
            redirect_uri = pRedirectUri.AbsoluteUri,
            client_secret = ConfigurationManager.AppSettings["FacebookAppSecret"],
            code = oauthResult.Code,
        });
        accessToken = result.access_token;
        expires = DateTime.UtcNow.AddSeconds(Convert.ToDouble(result.expires));

        // Get the user's profile information
        dynamic me = fbClient.Get("/me",
        new
        {
            fields = "first_name,last_name,email,name",
            access_token = accessToken
        });

        // Read the Facebook user values
        string sfacebookId = me.id;
        string firstName = me.first_name;
        string lastName = me.last_name;
        string email = me.email;

这是我的日志中异常的详细信息。

(OAuthException - #100) Code was invalid or expired. 

This may be because the user logged out or may be due to a system error.

source="Facebook" detail="Facebook.FacebookOAuthException: (OAuthException - #100) Code  was invalid or expired. This may be because the user logged out or may be due to a system error.

Stack Trace:

at Facebook.FacebookClient.ProcessResponse(HttpHelper httpHelper, String responseString, Type resultType, Boolean containsEtag, IList`1 batchEtags)

at Facebook.FacebookClient.Api(HttpMethod httpMethod, String path, Object parameters, Type resultType)   

at Facebook.FacebookClient.Get(String path, Object parameters)

从 Facebook 返回的查询字符串包含参数代码,并且它有一个值。

从堆栈跟踪中很容易看出,我的代码中的第一个 .Get() 方法调用最终调用了引发错误的 .ProcessResponse() 方法。

不幸的是,我搜索的所有地方都在谈论如何处理过期的访问令牌。

就我而言,我什至还没有检索到访问令牌,这是我的代码过期或无效。如何申请新代码?

谢谢,

4

1 回答 1

0

我永远无法让服务器端流程为我的所有用户工作,所以我继续并切换到 FB Javascript SDK,它现在正在为我工​​作。

于 2012-08-06T02:20:03.530 回答