我正在尝试使用我们在本地WiFi网络上的门户(该网站永久运行在本地网络上),在Facebook上检查客户到我们的咖啡馆。我正在使用以下使用Facebook C#SDK的代码:
if (Request.QueryString["code"] != null && Request.QueryString["code"] != "")
{
string AccessToken = Request["code"].ToString();
var fb = new FacebookClient(AccessToken);
dynamic parameters = new ExpandoObject();
parameters.message = "This is just a test.";
parameters.place = "<MY PAGE ID>";
dynamic result = fb.Post("me/feed", parameters);
var id = result.id;
}
else
{
var redirectUri = "http://<LOCAL SERVER IP ADDRESS>:<LOCAL SERVER PORT NUMBER>/FBLogin.aspx";
var service = new FacebookClient();
var loginUrl = service.GetLoginUrl(new
{
client_id = appID,
client_secret = appSecret,
redirect_uri = redirectUri,
response_type = "code",
scope = "publish_actions" // Add other permissions as needed
});
Response.Redirect(loginUrl.ToString());
var fb = new FacebookClient();
dynamic result = fb.Post("oauth/access_token", new
{
client_id = appID,
client_secret = appSecret,
redirect_uri = redirectUri
//code = Request.QueryString["code"].ToString()
});
}
我尝试了this question和其他人的所有内容,但我忘了链接,没有任何效果。
更新
我可以使用Facebook调试工具直接生成访问令牌来登记。
完全例外:
(OAuthException - #190)格式错误的访问令牌 AQBQAhmVl6xEYtUmSUzBCdcMq8Djzi-XgEkkFLVwUgT_v592CkhBxOiJ7xX6-PoUpvk2XRqZZ9TahXw8u7_R1qletojvnMR5ENlVTON5tzOg-6b6Mw2foGRyXUEnzNzYhc1p7bb48E9nV5NuB1tg0cFsSM2WSeSTYXnjyyuuuyxEjeqfXy1Kn0PTnIaH1s_2wuKuUCq2AdD-PyHkbj_zUADDnwZCeJk5KSHkqbcKTLgYaIk6roMWJb8xHsExJK86xbRt5jXvS2-bBLwi5dYHn_Fpc7NZjilRvNYWa2gyKSo8ElABnF3Qr051VJInVoNsXiOYTQK24tWvEqvOY_ZeKoId
答案 0 :(得分:2)
你应该使用'code'来生成AccessToken:
client_id=<YOUR_APP_ID>&redirect_uri=<YOUR_URL>&
client_secret=<YOUR_APP_SECRET>&code=<YOUR_CODE>
作为回应,您可以获得AccessToken。
您可以使用此代码获取accessToken:
public String GetAccessToken(string code)
{
//create the constructor with post type and few data
MyWebRequest myRequest = new MyWebRequest("https://graph.facebook.com/oauth/access_token", "GET", "client_id=" + this.ApplicationID + "&client_secret=" + this.ApplicationSecret + "&code=" + code + "&redirect_uri=http:%2F%2Flocalhost:5176%2F");
string accessToken = myRequest.GetResponse().Split('&')[0];
accessToken = accessToken.Split('=')[1];
return accessToken;
}