我正在使用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);
是否有可能实现我所寻找的目标,如果是,我做错了什么?
答案 0 :(得分:0)
第二次请求访问令牌的代码无效。没有理由这样做(并且它无论如何都不会一直工作)。您应该只在第一次使用时登录时保存访问令牌。
您收到的错误是因为当您将myString传递给FacebookClient时,myString为null,因此您没有提供访问令牌的错误。
另外,您应该注意到offline_access已被弃用,并且会在几周后删除,因此您不应构建一个使用它的新应用。