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
分享到:
相关推荐
在本文中,我们将深入探讨如何在Laravel框架中使用laravel-facebook-sdk进行Facebook应用程序的集成。...记得时刻关注Facebook的开发者文档,因为其API可能会随时间更新,确保你的应用程序始终与最新的API版本兼容。
确保熟悉 Facebook 开发者文档,以充分利用 SDK 提供的所有可能性。 最后,要记住,Facebook API 有时会有变更,因此定期检查 SDK 更新和 Facebook 的开发者政策是必要的,以确保你的应用始终保持兼容性和合规性。...
总的来说,Swift-AppAuth是实现OAuth 2.0和OpenID Connect身份验证的关键工具,它提供了一套安全、高效的解决方案,帮助开发者构建可靠的身份验证系统。通过深入理解和使用这个库,你可以为你的iOS和macOS应用添加...
在开发过程中,要考虑到用户可能拒绝授权、Facebook API 可能出现错误等情况,编写适当的错误处理代码。同时,使用模拟器或真实 Facebook 账户进行测试,确保功能正常。 ### 9. 性能优化 为了提高性能,可以考虑...
安装完成后,可以在项目中导入`ext_auth`模块,根据提供的API文档和示例代码来实现用户认证和授权功能。 对于初学者或开发者来说,理解和掌握`ext_auth`库的使用至关重要,因为它可以帮助构建稳定且安全的后端系统...
总的来说,dj-rest-auth是一个强大且灵活的认证授权库,它为Django RESTful API提供了便捷的身份验证和授权解决方案。无论你是初学者还是经验丰富的开发者,dj-rest-auth都是构建安全、高效API的一个值得信赖的伙伴...
在实际应用中,"incuna-auth"提供了丰富的API接口,允许开发者轻松集成到自己的项目中。例如,它可以与Django、Flask等Web框架无缝配合,实现用户认证和授权功能。此外,这个库还支持OAuth2协议,可以与Google、...
FastAPI是一个基于Python的现代、高性能的Web框架,它基于Type hints,提供了出色的自动API文档(通过Swagger UI和Redoc)和快速的开发体验。FastAPI的主要优点是其速度和易用性,使得开发API变得更加简单。 接着,...
在 .NET 和 Xamarin 开发环境中,Auth0.Portable 类库允许开发者通过简单的 API 调用来实现复杂的认证逻辑,包括OAuth2、OpenID Connect、JWT(JSON Web Tokens)等协议的支持。这对于构建跨平台的应用程序尤其有用...
在实际应用中,你将需要安装`extended-laravel-auth`扩展包,按照文档配置你的项目,可能涉及修改配置文件、迁移数据库、注册服务提供者以及编写控制器和视图。同时,确保遵循最佳实践,如使用中间件来保护路由,...
总结来说,"nodeconductor-auth-social"是NodeConductor项目中的一个关键组件,它提供了社交登录功能,增强了用户认证体验。对于使用NodeConductor构建云服务管理平台的开发者来说,理解和掌握这个库的使用是至关...
5. 完善的文档和示例:IP_Works_Auth 提供详细的API参考文档,以及丰富的代码示例,帮助开发者快速上手。 二、应用场景 1. 移动应用开发:在开发跨平台移动应用时,IP_Works_Auth 可以帮助快速集成社交登录功能,...
4. `README.md`: 提供项目介绍、安装指南、使用示例和贡献方法等信息,对于开发者来说是了解项目的重要文档。 使用AppAuth库的步骤大致如下: 1. 配置:在Android项目中添加AppAuth的依赖,通常通过Gradle的依赖...
在实际开发中,你需要了解每个社交媒体平台的API文档,因为它们都有自己特定的端点、参数和限制。例如,Facebook的Graph API提供了广泛的社交数据访问,而Instagram的API则侧重于图像和视频内容。在调用API时,要...
在WordPress开发中,有时我们需要与外部API进行交互,例如实现社交媒体登录、云服务同步或者其他定制化的功能。...对于想要学习如何在WordPress中实现外部API认证的开发者来说,这是一个很好的实践案例。
史上最全的整合第三方登录的工具,目前已支持Github、Gitee、微博、钉钉、百度、Coding、腾讯云...YurunOAuthLogin: PHP 第三方登录授权 SDK阿里妈妈MUX倾力打造的矢量图标库-iconfont: 本文档中的图标大部分取自该平台
Django 社交认证框架不仅限于文档中列出的服务,你可以轻松地扩展它以支持新的认证服务。只需创建一个新的后端类,遵循OAuth或OpenID Connect的标准,即可将新服务集成到你的应用中。 总之,Django 3.0 提供的社交...
使用`Facebook.Unity.Auth`命名空间中的类和方法,如`LoginManager`和`AccessToken`。 4. **用户登录**:调用`LoginManager.LoginWithReadPermissions`方法,传入所需的权限(如公开信息、好友列表等),启动...
在本项目"react_auth"中,我们探讨了如何在React前端应用中集成用户认证功能,并与MongoDB数据库进行交互。这个项目主要关注于后端开发,利用JavaScript作为主要编程语言,构建一个安全、高效的用户身份验证系统。 ...
总结来说,`facebookpagewriter`是一个方便的Python库,用于管理Facebook页面,它提供了丰富的功能来帮助开发者更高效地与Facebook API交互。通过正确配置和使用,可以极大地提升社交媒体管理的效率。