0

SDK の Facebook.dll のバージョン 6.0.10.0 を使用しています。アプリケーションのベータ テストを行っていますが、ユーザーの 1 人がログインできません。ユーザーは 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 に答える