facebook api
的文档写的不清不楚,很多都要靠自己碰壁之后猜测和琢磨问题的原因。
下面是几个文档中没说清楚的地方:
·
The URL
:
Facebook api
首先要使用
app
的一些
id
什么的,通过一个
link
来让用户授权这个
app
。如果用户授权后,
facebook
会
callback
到一个事前自己制定的一个
URL
,在这里,这个
callback URL
是
“The URL”
。因为在下一步想要生成
Access Token
的时候,设置的
redirect uri
必须必须是
“The URL”
。否则就会报类似这样的错误:
{
"error": {
"type":
"OAuthException",
"message": "Error
validating verification code."
}
}
·
The Host
:
Facebook
要求
callback
必须是应用程序中设置的
domain
的子
domain
或者子
domain
中的一个
link
,否则
facebook
是不会
callback
的。这点文档上倒是写的清楚了,不过无法指定
localhost
,这样就没法在本地调试程序了。
·
More About The URL
:
callback URL
其实可以挂参数,但是生成
code
和生成
access token
的这个
URL
必须完全一样
——
包括挂的参数。否则也会报第一条里的那个错误。而挂参数也很扯淡,推荐不要考虑挂参数。扯淡的地方有几点,首先有些字符不支持,无论是不是编码,比如
@
,比如参数值的第一个字符不能是
d
(别问我为啥。。。可能是我的环境有点问题吧)。
我的猜测是,
facebook
的
code
里面其实包含了
callback url
(包括参数)的特征值信息(
hash
),每次去用这个
code
生成
access token
的时候,
facebook
会先验证
code
里的
hash
值和这次传递的
callback
的
hash
值是否匹配,如果不匹配就暴第一条里的那个错误。
所以
facebook
也不知道是
code
错了还是
callback
url
不对。多半是
callback url
不一致。因为
code
错了可能是下面的异常信息:
·
Code is Invalidate:
没错,
code
是会过期的。这点
facebook
的文档里好像也没写清楚,只是说
access token
会过期,而且在生成
token
的时候给出了多少
s
后过期。但是
code
啥时候过期没说。
至少有一个触发条件
——
用户手动的注销,然后再登录。根据笔者的测试,如果用户不做手动的注销动作,大概一两天
code
就会过期,
过期后再使用
code
生成
access code
,会得到下面的错误:
{
"error": {
"type":
"OAuthException",
"message": "Code was
invalid or expired."
}
}
当然,如果再次生成一次
code
,之前生成的
code
就自动失效,使用那个
code
也会得到上面的异常。根据文档上的说明,
code
和根据这个
code
生成的
access code
是同时过期的。有效时间就是生成
token
的时候得到的那个时间。
·
Redirect
?:
facebook
只能通过
redirect
才能生成
code
。如果在浏览器里,这个动作浏览器会处理,自己只要设好
redirect uri
就行了。如果想在后台自动刷新
code
(
code
会失效的嘛),就需要在程序内部模拟
redirect
。有没有谁知道咋做,在
gae
的环境下
。
·
自己看文档没看全,
facebook
有一个叫做
offline_access
的权限,可以生成永远不会过期的
code
分享到:
相关推荐
包含翻译后的API文档:hadoop-auth-2.5.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.hadoop:hadoop-auth:2.5.1; 标签:apache、auth、hadoop、jar包、java、API文档、中文版; 使用方法:解压翻译...
包含翻译后的API文档:hadoop-auth-2.7.3-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.apache.hadoop:hadoop-auth:2.7.3; 标签:apache、hadoop、auth、中英对照文档、jar包、java; 使用方法:...
包含翻译后的API文档:vertx-auth-common-3.9.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:io.vertx:vertx-auth-common:3.9.0; 标签:vertx、auth、common、中文文档、jar包、java; 使用方法:解压翻译后的...
赠送原API文档:hadoop-auth-2.6.5-javadoc.jar 赠送源代码:hadoop-auth-2.6.5-sources.jar 包含翻译后的API文档:hadoop-auth-2.6.5-javadoc-API文档-中文(简体)-英语-对照版.zip 对应Maven信息:groupId:org....
包含翻译后的API文档:nacos-auth-2.0.4.RELEASE-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:com.pig4cloud.nacos:nacos-auth:2.0.4.RELEASE; 标签:pig4cloud、auth、nacos、jar包、java、中英对照...
赠送原API文档:hadoop-auth-2.6.5-javadoc.jar 赠送源代码:hadoop-auth-2.6.5-sources.jar 包含翻译后的API文档:hadoop-auth-2.6.5-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:org.apache....
赠送原API文档:hadoop-auth-2.9.1-javadoc.jar 赠送源代码:hadoop-auth-2.9.1-sources.jar 包含翻译后的API文档:hadoop-auth-2.9.1-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:org.apache....
赠送原API文档:hadoop-auth-2.9.1-javadoc.jar 赠送源代码:hadoop-auth-2.9.1-sources.jar 包含翻译后的API文档:hadoop-auth-2.9.1-javadoc-API文档-中文(简体)-英语-对照版.zip 对应Maven信息:groupId:org....
包含翻译后的API文档:hadoop-auth-2.5.1-javadoc-API文档-中文(简体)-英语-对照版.zip 对应Maven信息:groupId:org.apache.hadoop,artifactId:hadoop-auth,version:2.5.1 使用方法:解压翻译后的API文档,用...
本文档是 Java 2 Platform Standard Edition 6.0 的 API 规范。 请参见: 描述 Java 2 Platform 软件包 java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含...
包含翻译后的API文档:nacos-auth-2.0.4.RELEASE-javadoc-API文档-中文(简体)版.zip; Maven坐标:com.pig4cloud.nacos:nacos-auth:2.0.4.RELEASE; 标签:pig4cloud、auth、nacos、jar包、java、中文文档; 使用...
包含翻译后的API文档:vertx-auth-common-3.9.0-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:io.vertx:vertx-auth-common:3.9.0; 标签:vertx、auth、common、中英对照文档、jar包、java; 使用方法...
javax.security.auth.x500 此包包含应该用来在 Subject 中存储 X500 Principal 和 X500 Private Crendentials 的类。 javax.security.cert 为公钥证书提供类。 javax.security.sasl 包含用于支持 SASL 的类和接口...
Laravel开发-laravel-facebook-auth-passport Facebook授权请求授予Laravel Passport-从Danjdewhurst/Laravel Passport Facebook登录进行修改
Api-auth0-spring-security-api-sample.zip,Asv0集成JavaSpring和Spring Security REST API Services Auth0API示例的示例:使用Spring Bug和Spring Security,一个api可以被认为是多个软件设备之间通信的指导手册。...
赠送jar包:swagger-models-1.5.24.jar; 赠送原API文档:swagger-models-1.5.24-javadoc.jar; 赠送源代码:swagger-models-1.5.24-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
Laravel开发-laravel-api-auth 此包提供了一种在Laravel中添加API身份验证的灵活方法
jwt_auth:使用JWT的Auth API
注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)-英语-对照版.zip】 jar包下载地址:【***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【*...