我正在为我的应用程序构建一个手动登录流程,它正在集成一些facebook功能。 我需要检查用户的当前access_token何时到期。 API纪录片说我应该做这个电话:
GET graph.facebook.com/debug_token?
input_token = {token-to-inspect}& access_token = {app-token-or-admin-token}
所以我在C#中做到了这一点:
Uri inspectAccessTokenUri = new Uri("http://graph.facebook.com/debug_token?input_token="+access_token+"&"); //IDK which value should have the last parameter
HttpWebRequest checkToken = (HttpWebRequest)WebRequest.Create(inspectAccessTokenUri);
var response = await checkToken.GetResponseAsync();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
string data = reader.ReadToEnd();
Debug.WriteLine(data);
最后一个参数应该是app-token:
但是当然我查了解如何获取app-token和facebook说:
请注意,因为此请求使用您的应用秘密,所以绝对不能 在客户端代码或可以反编译的应用程序二进制文件中。 重要的是,您的应用秘密永远不会与任何人共享。 因此,只应使用服务器端代码进行此API调用。 (Facebook Graph API文档1.1.16)
所以我的问题:我可以在没有app-token或硬编码app-secret的情况下检查令牌?
答案 0 :(得分:1)
应用程序密钥通常由服务器端应用程序使用,我们不会在我们的UWP应用程序中使用它,它可以被反编译。
阅读有关FB Graph Debug-Token的官方文档,这只能在您调试应用时使用,例如,如果您想在发布应用后检查有关给定访问令牌的元数据,你的代码不会在它上传。
在UWP应用中,我们使用WebAuthenticationBroker课程连接到OAuth提供商,例如Facebook,Flickr,Google和Twitter。使用OAuth连接时需要维护。例如,expires信息包含在访问令牌中,当我们使用OAuth协议进行身份验证和授权时,我们需要在访问令牌过期后刷新它。
由于这些条件,您可能会重新考虑您在UWP应用中可以执行的操作以及您应该选择的API。
答案 1 :(得分:0)
如果app-token过期,您将收到Facebook响应错误。你可以抓住这个例外来处理你想要的情况。通过这种方式,您不需要使用您的应用秘密提出请求。 您还可以将包含AccessTokenData的fb-uwp sdk用于经过身份验证的用户