Facebook Api 在不对应用程序密码进行硬编码的情况下检查访问令牌

Facebook Api Check Access Token Without Hardcoding App Secret

我正在为我的应用程序构建一个手动登录流程,它集成了一些 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);

最后一个参数应该是应用程序令牌:

但是: 当然,我查找了如何获取应用程序令牌和 facebook 说:

Note that because this request uses your app secret, it must never be made in client-side code or in an app binary that could be decompiled. It is important that your app secret is never shared with anyone. Therefore, this API call should only be made using server-side code. (Facebook Graph API Documentation 1.1.16)

所以我的问题是:我可以在没有应用程序令牌的情况下检查令牌或对应用程序密码进行硬编码吗?

  • A​​pp secret一般用于服务端应用,我们的UWP应用中不使用它,可以反编译。

  • 阅读有关 FB Graph 的官方文档 Debug-Token,这只能在您调试应用程序时使用,例如,如果您想检查有关给定访问令牌的元数据,之后你发布你的应用程序,你的代码将不会在它上面中继。

  • 在 UWP 应用程序中,我们使用 WebAuthenticationBroker class 连接到 OAuth 提供商,例如 Facebook、Flickr、Google 和 Twitter。使用 OAuth 连接时需要维护。例如access token中包含expires信息,当我们使用OAuth协议进行认证授权时,access token过期后需要刷新access token

由于这些情况,您可能会重新考虑您可以在 UWP 应用程序中做什么以及您应该选择哪个 API。

如果应用令牌已过期,您将收到 Facebook 响应错误。并且你可以捕获这个异常来处理你想要的情况。通过这种方式,您无需使用您的应用程序密码发出请求。 您还可以使用包含已验证用户的 AccessTokenData 的 fb-uwp sdk