«(190) Недопустимый токен доступа OAuth 2.0» при переключении на Facebook c # sdk 5.0.8 - PullRequest
0 голосов
/ 30 марта 2011

После перехода с v4 на v5.0.3 я переключаюсь на Facebook C # SDK v5.0.8 Beta

С v5.03 у меня было:

                CanvasAuthorizer auth;
                var fb = new FacebookClient(appId, appSecret);

                if (!String.IsNullOrEmpty(_requiredAppPermissions))
                {
                    auth = new CanvasAuthorizer { Permissions = _requiredAppPermissions.Split(',') };
                }
                else
                {
                    auth = new CanvasAuthorizer();// { Permissions = RWE.Core.Config.FacebookPerms };
                }
                if (_AuthUrlCancel != "") auth.CancelUrlPath = _AuthUrlCancel;
                if (_AuthUrlReturn != "") auth.ReturnUrlPath = _AuthUrlReturn;

                if (auth.Authorize())
                {
                    fb = new FacebookClient(this.CurrentSession.AccessToken);
                    //do what i want
                }

Теперь,с версией 5.0.0 она не работает и сообщает мне:

(190) Недопустимый токен доступа OAuth 2.0 на Facebook.FacebookClient.Api (путь строки, параметры IDictionary 2 parameters, HttpMethod httpMethod, Type resultType) at Facebook.Web.FacebookWebClient.Api(String path, IDictionary 2, HttpMethod httpMethod,Введите resultType) в Facebook.Web.FacebookWebContext.HasPermissions (String appId, String appSecret, Int64 userId, String [] permissions) в Facebook.Web.FacebookWebContext.IsAuthorized (String [] permissions) в Facebook.Web.FacebookWebAuthorizer.A

1 Ответ

1 голос
/ 31 марта 2011

Извините за путаницу.FacebookClient не является прямой заменой FacebookApp.FacebookApp раньше смотрел на сессию и получал access_token.FacebookClient этого не делает.

Я бы посоветовал взглянуть на этот учебник, и вы найдете подходящий способ сделать это.Но вкратце вам нужно сделать это:

var accessToken = FacebookWebContext.Current.AccessToken;
var client = new FacebookClient(accessToken);

или использовать FacebookWebClient, например:

var client = new FacebookWebClient();

FacebookWebClient будет обрабатывать получение маркера доступа из сеанса для вас.FacebookClient не будет.

...