- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
主要问题:我应该如何通过 C# SDK 将 2 小时访问 token 延长为 60 天访问 token ?您能否提供已经用代码换取 2 小时访问 token 的部分的示例?
背景:我一直在四处寻找并尝试各种解决方案,但尚未找到适合我的解决方案。我可以成功地进行/me 调用并获取有关当前用户的信息,但是当我尝试扩展访问 token 时它失败了。
此应用程序的目标是允许用户设置帖子并在事后一段时间内监控点赞和评论。显然,我们需要 60 天的 token 。
当您可以请求永久 token 时,我将在其他人完成 90% 的工作后接管这个项目。我的工作是修复它,以便我们可以使用 60 天 token 。我可能会问非常愚蠢的后续问题。做好准备!
当前流程:用户设置他的帖子,点击一个按钮,我们提示他们授权我们的应用程序/通过 javascript sdk 登录到 facebook。在他们登录后,我们在 javascript 中处理其他不相关的事情,然后将其通过 AJAX 传递到 C# 以将一些信息保存到我们的数据库(包括 token )并发布。一切顺利,我在 javascript 中获得了访问 token ,我可以使用该 2 小时 token 来获取有关已登录用户的信息,但是当我尝试扩展时,我遇到了两个错误之一,我将在下面提到导致它们的代码。
我尝试过的:
工作:我相信我在这里的另一篇文章中找到了这个。 var fbClient = new FacebookClient(accessToken);
Dictionary<string, object> parameters = new Dictionary<string, object>();
parameters.Add("client_id", appId);
parameters.Add("redirect_uri", redirectURI);
parameters.Add("client_secret", appSecret);
parameters.Add("code", accessToken);
var result = fbClient.Get("/me", parameters);
不工作:这来自不同的地方,包括这里和 sdk 文档。我见过有人包括重定向 url 并说它需要与您最初获得 accesstoken 时的那个相匹配,但我们在 javascript 中做到了这一点并且没有使用重定向 url。 字典参数2 = new Dictionary();
parameters2.Add("client_id", appId);
//parameters2.Add("redirect_uri", redirectURI);
parameters2.Add("client_secret", appSecret);
//parameters2.Add("code", accessToken);
parameters2.Add("grant_type", "fb_exchange_token");
parameters2.Add("fb_exchange_token", accessToken);
var result2 = fbClient.Get("/oauth/access_token", parameters2);
错误:{Newtonsoft.Json.JsonReaderException:解析值时遇到意外字符:a。第 1 行,位置 1。Error2:如果我注释掉 grant_type 和 fb_exchange_token 并取消注释代码和 redirecturi,我会得到与下一个方法相同的错误...
不工作:这是我从这里的另一篇文章中复制/粘贴重命名以匹配我的变量。 Unable to get long lived expiration token
dynamic result3 = new ExpandoObject();
try
{
dynamic parameters3 = new ExpandoObject();
parameters3.grant_type = "fb_exchange_token";
parameters3.fb_exchange_token = accessToken;
parameters3.client_id = appId;
parameters3.client_secret = appSecret;
result3 = fbClient.Get("oauth/access_token", parameters);
}
catch (FacebookOAuthException err)
{
result3.error = "Error";
result3.message = err.Message;
}
catch (Exception err)
{
result3.error = "Error";
result3.message = err.Message;
}
错误:{(OAuthException) (OAuthException) 无效的验证码格式。
最佳答案
在作为回调的处理程序文件中将以下代码与 Facebook.NET 和 Json.NET 结合使用。
public void ProcessRequest (HttpContext context)
{
if (context.Request.Params.Get("error_reason") == "user_denied")
{
context.Response.Write("Access Denied");
}
else if (context.Request.Params.Get("code") != null && context.Request.Params.Get("code") != "")
{
string shorttoken = HttpUtility.ParseQueryString(HttpUtil.GetHtmlPage("https://graph.facebook.com/oauth/access_token?client_id=" + APP_ID + "&redirect_uri=http://huadianz.me/mvp/auth/FacebookOAuth.ashx&client_secret=" + APP_SECRET + "&code=" + context.Request.Params.Get("code")))["access_token"];
string longtoken = HttpUtility.ParseQueryString(HttpUtil.GetHtmlPage("https://graph.facebook.com/oauth/access_token?client_id=" + APP_ID + "&client_secret=" + APP_SECRET + "&grant_type=fb_exchange_token&fb_exchange_token=" + shorttoken))["access_token"];
Facebook.FacebookClient fc = new Facebook.FacebookClient(longtoken);
dynamic result = fc.Get("me");
context.Response.Redirect("/");
//Store Token here
}
}
我的实用程序文件在这里:
public static class HttpUtil
{
public static string GetHtmlPage(string strURL)
{
String strResult;
WebResponse objResponse;
WebRequest objRequest = HttpWebRequest.Create(strURL);
objResponse = objRequest.GetResponse();
using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
{
strResult = sr.ReadToEnd();
sr.Close();
}
return strResult;
}
}
关于C# Facebook SDK 将 accesstoken 延长至 60 天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12101445/
我有一个网站,用户可以在其中提交游戏报告。我目前结合使用 markdown 和 HTMLPurifier 来允许有限的标记。 我想添加内联照片支持,从用户图库中绘制图像。 我用一些 JS 构建了一个图
Name = (src.Client.Account.Rank > 65 ? src.Client.Account.Rank > 2 ? "$" : "@" : "") + src.Name, 这
在下面的例子中: http://coliru.stacked-crooked.com/a/7a1df22bb73f6030 struct D{ int i; auto test2
有没有办法延长 Firebase SMS 的过期时间?似乎只有一分钟左右有效,有时需要比这更长的时间才能收到短信。 更新:我正在通过 Web API 发送短信 最佳答案 将此视为目前的最新答案,今天已
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
我正在绘制相同的 密度图 使用 基础绘图系统和 ggplot2 . 中的密度图基础绘图系统有光滑的尾部: d = density(iris$Sepal.Length) plot(d) 中的密度图ggp
大家好,我认识的每个人都问这个问题很基础而且很愚蠢,但这个问题让我很烦。如果我有以下代码。 var timerVal = 900000 function myFunction() { setTim
当我在 Rust 0.12.0 中编译以下代码时,出现以下错误: error: borrowed value does not live long enough let _ = match re.ca
我正在尝试将一个系列解析为 token 树,但是当我尝试实现我的解析特征时,我收到了与引用生命周期相关的错误。我认为创建一个盒装版本可以解决任何与引用计数或生命周期有关的问题。代码如下。 impl P
当我在 Rust 0.12.0 中编译以下代码时,出现以下错误: error: borrowed value does not live long enough let _ = match re.ca
我在方法中有以下代码: int64_t delayInSeconds = 2.0f; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
当我按下主页按钮时,我的应用程序正确暂停,但只持续几分钟。如果我离开它一会儿然后返回它,应用程序会重新启动。 我没有在我的应用程序中运行任何后台任务,其他应用程序保持暂停状态的时间比我的要长得多。 这
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 9 年前。 Improve this qu
我需要服务停止足够长的时间。大约 5-10 分钟。现在在 Windows 10 上,我的服务系统在 60 秒后终止,而没有等待它正确完成。使用网络函数 RequestAdditionalTime 看到
如何延长windows app证书的有效期?我们正在加载应用程序/主要障碍是证书每年都会过期,通过 GP 更新证书很麻烦,因为我们的环境中已经存在问题。我们希望将其延长至少 5 年。 我设法找到了关于
最近我看到了这个: 在 2037 年之前,我的任何应用都不太可能存活(而且我存活了下来,所有依赖它的东西都存活了),我的应用是否会因为需要新证书而必须使用新的包名称重新发布? 没有办法延长证书吗? 最
有什么方法可以延长 keystore 或证书的时间有效性吗? 我已经创建了一个有效期为 10 年的 keystore 。但是,由于谷歌市场的限制,我需要 30 年的有效期。 最佳答案 证书有效性是证书
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关于您编写的代码问题的问题必须在问题本身中描述具体问题 — 并且包括有效代码 以重现它。参见 SSC
我 3 天前注册了 30 天的 Azure 试用版。我有 2 个虚拟机。今天,我的管理门户中弹出 2 条消息。 您的免费试用将在 25 天后到期。单击此处立即升级。 根据您的使用历史记录(21.52
我是一名优秀的程序员,十分优秀!