Android Facebook如何验证移动应用

Android Facebook如何验证移动应用,android,facebook,hash,oauth,key,Android,Facebook,Hash,Oauth,Key,假设您构建了一个使用Facebook登录的本机android应用程序。首先,您必须构建一个Facebook应用程序,并配置android应用程序的包名、类名和密钥哈希。我假设应用程序的真实性是通过这个密钥散列来验证的。但问题是,当我们在Facebook应用程序中配置了这个密钥后,我们再也不会在移动应用程序中配置它,也不会在调用API时将其发送到Facebook。那么Facebook如何验证这是进行API调用的原始应用程序呢?每当你将一个应用程序放到设备上(无论是通过eclipse/Intelli

假设您构建了一个使用Facebook登录的本机android应用程序。首先,您必须构建一个Facebook应用程序,并配置android应用程序的包名、类名和密钥哈希。我假设应用程序的真实性是通过这个密钥散列来验证的。但问题是,当我们在Facebook应用程序中配置了这个密钥后,我们再也不会在移动应用程序中配置它,也不会在调用API时将其发送到Facebook。那么Facebook如何验证这是进行API调用的原始应用程序呢?

每当你将一个应用程序放到设备上(无论是通过eclipse/IntelliJ还是通过构建.apk),你都要用密钥对其进行签名。当您使用SSO通过Facebook登录时,本机Facebook应用程序可以获得呼叫应用程序的签名,并将其传递给服务器进行验证。

真的,我猜生成的
.apk
文件总是使用
debug.keystore
键进行签名。这与我通过谷歌搜索发现的情况不同。发布应用程序时,您必须使用其他私钥进行签名。首先,感谢您的回复。但是,如果我的android设备上没有安装本机Facebook应用程序,那么Facebook服务器如何接收我的应用程序的签名呢?没有,但是你没有获得SSO访问令牌,该令牌的使用寿命更长。我在这里看到了短期和长期代币之间的区别。因此,如果我知道某个应用程序的fb应用程序id是由某人创建的,我可以在我的移动应用程序中使用该id获取短期访问令牌以访问用户信息(我不需要为我的移动应用程序创建fb应用程序)。我说的对吗?你忘了用户还得授权你。假设你的应用程序是FOO,并且他们在授权页面的应用程序栏上看到,他们就会知道有什么事情发生了。用户也可以在任何时候取消对任何应用程序的授权。我明白了。非常感谢你回答我的问题。我想我得到了我需要的。再次感谢。