Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Facebook身份验证令牌交换_Android_Facebook_Google App Engine - Fatal编程技术网

Android Facebook身份验证令牌交换

Android Facebook身份验证令牌交换,android,facebook,google-app-engine,Android,Facebook,Google App Engine,是否可以使用Android applicaton从Facebook检索到的身份验证令牌对服务器端的用户进行身份验证? 换句话说,Android应用程序使用SSO并获取身份验证令牌。然后将此令牌发送到部署在Google App Engine上的后端应用程序。然后,后端应用程序使用令牌根据Facebook验证用户 我猜这是不可行的,因为检索到的令牌只能由Android应用程序使用,但谁知道呢?也许它可以被重新使用?Facebook实际上有一个Android SDK,可以让你这样做。可以找到相关信息。

是否可以使用Android applicaton从Facebook检索到的身份验证令牌对服务器端的用户进行身份验证? 换句话说,Android应用程序使用SSO并获取身份验证令牌。然后将此令牌发送到部署在Google App Engine上的后端应用程序。然后,后端应用程序使用令牌根据Facebook验证用户


我猜这是不可行的,因为检索到的令牌只能由Android应用程序使用,但谁知道呢?也许它可以被重新使用?

Facebook实际上有一个Android SDK,可以让你这样做。可以找到相关信息。

是的,您可以。有效的访问令牌是有效的访问令牌。Graph API不知道令牌来自何处,但只有令牌具有访问Graph API该部分的适当权限。但是,请记住,代币仅在发行后24小时内有效。(这真的是一个词吗?)从发布之日起?

当使用facebook android sdk和SingleSignOn(SSO)时,访问令牌格式实际上发生了变化。 而不是获取传统的身份验证令牌,该令牌包含用户ID和会话密钥作为身份验证令牌的一部分 现在我们得到了不同格式的authToken

由于Facebook开发人员仍在使用新格式化的访问令牌支持restapi 同时,我们可以在android facebook sdk上禁用SSO,方法是将默认的_AUTH_ACTIVITY_代码从32665(在facebook.java中)更改为-1 这将调用传统拨号方式来授予访问令牌,作为回报,您将获得包含会话密钥的访问令牌

那些想要生成安全会话密钥的人需要在Facebook.java中添加自己的方法

公共字符串getSessionSecret(字符串accessToken)引发格式错误的异常,IOException { Bundle b=新Bundle(); b、 putString(“方法”、“授权促销”); b、 putString(“访问令牌”,accessToken); b、 putString(“session_key_only”,“true”); 字符串响应=请求(b); 返回响应;
}

您从Android API获得的令牌可以发送到您的服务器,服务器可以通过查询图形来检查令牌的有效性(例如,使用/me?auth_Token=..)。
问题在于,同一令牌可由任何第三方使用——它不是特定于客户端的——因此,如果您基于该令牌进行服务器标识,则会出现问题(因为第三方应用程序可以使用其用户令牌并由您进行身份验证)。我正在试图找到一种解决这个问题的方法,但我还没有好的想法…

是的,我知道我可以在Android上进行单点登录。但问题是,我是否可以与我的后端应用程序交换身份验证令牌?