Недопустимое исключение токена доступа OAuth 2.0 - PullRequest
0 голосов
/ 08 декабря 2010

Я пытаюсь получить все пользовательские фотографии с помощью FQL (Facebook C # SDK, ASP .NET MVC, VB, приложение iFrame Canvas).Мой код следующий:

Dim app As New FacebookApp()
Dim result As New List(Of FB_Picture)
Dim photoList As Object = app.Fql("SELECT src_small,src_big,src,caption FROM photo WHERE aid IN ( SELECT aid FROM album WHERE owner=" + FacebookId.ToString() + " ) ORDER BY created DESC LIMIT " + FromN.ToString() + "," + ToN.ToString())

For i As Integer = 0 To photoList.Count
result.Add(New FB_Picture() With {.Caption = photoList(i).caption, .Src = photoList(i).src, .Src_big = photoList(i).src_big, .Src_small = photoList(i).src_small}) 
Next
Return result

FB_Picture - это мой класс для хранения фотографий пользователей.

Мое приложение имеет разрешения user_photos.

Но у меня есть ошибка - Invalid OAuth 2.0Токен доступа

FacebookOAuthException: Invalid OAuth 2.0 Access Token]
Facebook.FacebookApp.MakeRequest(HttpMethod httpMethod, Uri requestUrl, Byte[] postData, String contentType) +393
Facebook.<>c__DisplayClassf.<OAuthRequest>b__e() +20
Facebook.FacebookApp.WithMirrorRetry(Func`1 body) +225
Facebook.FacebookApp.OAuthRequest(Uri uri, IDictionary`2 parameters, HttpMethod httpMethod) +338
Facebook.FacebookApp.RestServer(IDictionary`2 parameters, HttpMethod httpMethod) +481
Facebook.FacebookAppBase.Api(String path, IDictionary`2 parameters, HttpMethod httpMethod) +236
Facebook.FacebookAppBase.Api(IDictionary`2 parameters) +132
Facebook.FacebookAppExtensions.Fql(FacebookAppBase app, String query) +310

Не могли бы вы мне помочь?Что я могу исправить?Можно ли использовать FQL с помощью Facebook C # SDK?

Ответы [ 2 ]

2 голосов
/ 01 января 2011

Есть одна вещь, которую разработчики SDK Facebook не дают понять новым пользователям SDK или действительно новым людям, которые подходят к разработке Facebook.

SDK Facebook, очевидно, является оберткой, но этообертка сверху печенья.В конечном итоге это означает, что Facebook поддерживает состояние сеанса для вашего приложения.Вы не поддерживаете это, они делают.Поэтому каждый раз, когда пользователь вашего приложения щелкает ссылку в вашем приложении, и вы хотите отслеживать этого пользователя (или, точнее, этот сеанс), вам необходимо убедиться, что ваша ссылка указывает на URL-адрес, такой как:

http://apps.facebook.com/Your_Application_Name_Here

, а не:

http://www.Your_Application_Name_Here.com

, если вы этого не сделаете, Facebook не сможет отследить сеанс и вы фактически покинули их домен.Вы заметите это, если совершите ошибку, которую я совершил, когда писал свои ссылки в своих представлениях, используя Url.Action:

<a href="<%= Url.Action("CreateOrder", "Home") %>">Create an Order</a>

Я продолжал получать ошибку, аналогичную вашей.Вот почему Тоттен и другой парень, который написал SDK, дали вам вспомогательные методы, такие как:

<%= Url.CanvasAction("CreateOrder", "Home") %>

HTH

1 голос
/ 20 декабря 2010

Вам нужен активный сеанс, чтобы сделать запрос FQL.Посмотрите примеры в новейшей версии Facebook C # SDK для получения справки о том, как получить токен доступа.Получив токен доступа, просто измените свой код на следующий:

Dim app As New FacebookApp("your_access_token_here")
...