`
deepnighttwo
  • 浏览: 49684 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Facebook Auth API文档中没说清楚的事情

阅读更多

 

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

 

分享到:
评论
1 楼 qjzxhurong 2013-01-11  
请问博主有通过facebook的api抓取东西过吗?一个channel的墙(wall),它上面的文章(article)有些能通过api抓到,有些在api里是没有的。造成少数无法抓取到,这种现象的原因博主有研究过吗?

相关推荐

    hadoop-auth-2.5.1-API文档-中文版.zip

    包含翻译后的API文档:hadoop-auth-2.5.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.hadoop:hadoop-auth:2.5.1; 标签:apache、auth、hadoop、jar包、java、API文档、中文版; 使用方法:解压翻译...

    hadoop-auth-2.7.3-API文档-中英对照版.zip

    包含翻译后的API文档:hadoop-auth-2.7.3-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.apache.hadoop:hadoop-auth:2.7.3; 标签:apache、hadoop、auth、中英对照文档、jar包、java; 使用方法:...

    vertx-auth-common-3.9.0-API文档-中文版.zip

    包含翻译后的API文档:vertx-auth-common-3.9.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:io.vertx:vertx-auth-common:3.9.0; 标签:vertx、auth、common、中文文档、jar包、java; 使用方法:解压翻译后的...

    hadoop-auth-2.6.5-API文档-中英对照版.zip

    赠送原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....

    nacos-auth-2.0.4.RELEASE-API文档-中英对照版.zip

    包含翻译后的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、中英对照...

    hadoop-auth-2.6.5-API文档-中文版.zip

    赠送原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....

    hadoop-auth-2.9.1-API文档-中文版.zip

    赠送原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....

    hadoop-auth-2.9.1-API文档-中英对照版.zip

    赠送原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....

    hadoop-auth-2.5.1-API文档-中英对照版.zip

    包含翻译后的API文档:hadoop-auth-2.5.1-javadoc-API文档-中文(简体)-英语-对照版.zip 对应Maven信息:groupId:org.apache.hadoop,artifactId:hadoop-auth,version:2.5.1 使用方法:解压翻译后的API文档,用...

    JAVA_API1.6文档(中文)

    本文档是 Java 2 Platform Standard Edition 6.0 的 API 规范。 请参见: 描述 Java 2 Platform 软件包 java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含...

    nacos-auth-2.0.4.RELEASE-API文档-中文版.zip

    包含翻译后的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、中文文档; 使用...

    vertx-auth-common-3.9.0-API文档-中英对照版.zip

    包含翻译后的API文档:vertx-auth-common-3.9.0-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:io.vertx:vertx-auth-common:3.9.0; 标签:vertx、auth、common、中英对照文档、jar包、java; 使用方法...

    JavaAPI1.6中文chm文档 part1

    javax.security.auth.x500 此包包含应该用来在 Subject 中存储 X500 Principal 和 X500 Private Crendentials 的类。 javax.security.cert 为公钥证书提供类。 javax.security.sasl 包含用于支持 SASL 的类和接口...

    Laravel开发-laravel-facebook-auth-passport

    Laravel开发-laravel-facebook-auth-passport Facebook授权请求授予Laravel Passport-从Danjdewhurst/Laravel Passport Facebook登录进行修改

    Api-auth0-spring-security-api-sample.zip

    Api-auth0-spring-security-api-sample.zip,Asv0集成JavaSpring和Spring Security REST API Services Auth0API示例的示例:使用Spring Bug和Spring Security,一个api可以被认为是多个软件设备之间通信的指导手册。...

    swagger-models-1.5.24-API文档-中文版.zip

    赠送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开发-laravel-api-auth 此包提供了一种在Laravel中添加API身份验证的灵活方法

    jwt_auth:使用JWT的Auth API

    jwt_auth:使用JWT的Auth API

    hadoop-auth-2.7.3.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)-英语-对照版.zip】 jar包下载地址:【***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【*...

Global site tag (gtag.js) - Google Analytics