Facebook SDK .Net(C#)离线上传图片

时间:2012-03-10 18:54:31

标签: facebook-graph-api facebook-c#-sdk offline

我正在使用v6 C#.Net Facebook SDK(可以找到一个博客http://blog.prabir.me/post/Facebook-CSharp-SDK-Writing-your-First-Facebook-Application-v6.aspx)。
我需要从用户那里获得对offline_access的访问权限,然后才能获得对该用户发布(不同会话)图像的访问权限。
我也尝试将图像上传到某个页面(我的)但不能。
我正在为用户提供一个简单的对话框,并接受他允许我要求的所有凭据“user_about_me,read_stream,user_online_presence,friends_online_presence,offline_access,publish_stream,photo_upload” 在不同的会话(重启我的应用程序)中,我使用以下方法创建访问令牌: (使用WebRequest如下:)

var url = string.Format("https://graph.facebook.com/oauth/access_token?client_id={0}&client_secret={1}&grant_type=client_credentials",AppId, AppSecret);
WebRequest request = WebRequest.Create(url);
request.Method = "GET";
request.ContentType = "application/x-www-form-urlencoded";
HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse();
var myString = (new StreamReader(webResponse.GetResponseStream()).ReadToEnd());
myString = myString.Replace("access_token=", "");

但是,当尝试访问之前已提供offline_access凭据的用户时,使用访问令牌我会抛出异常:
(OAuthException)请求此资源需要访问令牌
一个非常简单的要求:

var fb = new FacebookClient(myString);
var result = fb.Get("/{0}/permissions", userThatGaveCredentials);

是否有可能实现我所寻找的目标,如果是,我做错了什么?

1 个答案:

答案 0 :(得分:0)

第二次请求访问令牌的代码无效。没有理由这样做(并且它无论如何都不会一直工作)。您应该只在第一次使用时登录时保存访问令牌。

您收到的错误是因为当您将myString传递给FacebookClient时,myString为null,因此您没有提供访问令牌的错误。

另外,您应该注意到offline_access已被弃用,并且会在几周后删除,因此您不应构建一个使用它的新应用。