Facebook Api检查访问令牌而无需硬编码App Secret

时间:2016-03-01 20:09:34

标签: facebook-graph-api win-universal-app webrequest

我正在为我的应用程序构建一个手动登录流程,它正在集成一些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的情况下检查令牌?

2 个答案:

答案 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用于经过身份验证的用户