答案
对于您的第一个问题,我想您会token
在浏览器中处理所有内容而不是在服务器上处理时使用。
对于您的主要问题,据我所知,您无法更改 Facebook 重定向成功授权的方式。Facebook 不会将令牌作为干净的查询参数提供给您。如果您使用token
or code token
,您想要的将在哈希片段中。对不起。
注意:这对您来说可能不是问题。我不确定你想要什么“附加验证”,但是当你使用 时code token
,交换结果代码会得到一个与你刚刚嵌入在 URI 中的不同的令牌。两者现在都有效,并将分别过期。确实,您可能需要代码或令牌;两者都不会帮助您,因为它们没有链接。
使用所有三种方法的示例:
如果你设置response_type
你code
会被重定向到类似的东西:
http://example.com/redirect_uri?state=thestatepassed&code=AQDN9E9GYjA8NbyCt
87_jV5vHnCQylNxmBswo6Z1BsrR7lmTPom6wjrzfan6P4GBLDt3EQrfPg0xSLoMLxBBfscsyfSY
JNM2vu9OoqEQXXSJCTUq_fMpUwqkYbCHp-GAqL4H1ymbMz7zPKAG61V9BtKTSuez39yhawOu7l-
6ww4thP41Ka9PVcknTQ6fPjPXKYSyxEmANps9zevCPFsXpBZCO7_dms65-ZZuG2wVBd16gFnBZH
q8EY0qih6-9o61wXh7bBvVPVSZ2im7Oj1nx47YgDpbD3X0XdlVhUoGYmBdER9hNmIC2PmmY7VAo
PlYCZc#_-_
从那里,您需要通过 Facebook 的 OAuth 端点交换代码以接收访问令牌。然后可以针对 Facebook API 使用访问令牌。
如果你设置response_type
你token
会被重定向到类似的东西:
http://example.com/redirect_uri#access_token=CAACYnSxGEhsBAJBg0ohZBhAf7pKEU
sm5ytZAZBzKjISFuRun2ZByZCqEsxrVIgtiO7iIlJZBBbGm6fRPQXItZCX6YgjPknUBsr78tJtv
W6fySULrUo9vdW57ZCMUUIlNaeZAcU8DzUXKmFpgotOyhE3jXYz1c3eu00Aii0AZBsPrtrwjpwQ
mV8VYQNiqKZBIsqOrIwZD&expires_in=4168&state=thestatepassed
您拥有调用 Facebook API 所需的一切。返回的访问令牌是有效的,但如果您在服务器端执行某些操作,则可能应该针对 Facebook 的令牌检查端点进行检查。(真的,在那一点上,只需使用code
。我从来没有这样做过,祝你好运。)
如您所述,访问令牌现在包含在 url 的哈希片段中。
如果你设置response_type
你code token
会被重定向到类似的东西:
http://example.com/redirect_uri#code=AQAtzsjPivFPsJ538KFlPuhLaK6pDMlrGDiwmi
KDcpgNfWrO1EdX5i6zK_Op2D0QDEXZLyifXxh4TSeBZCWhnkl7YV1LMyEkbPURAWSoqRoeG7tfM
4nB4nDAHOK0H9umb0KnoypRT1pP05FJKhl2QjpCJrPPFDHl6y-1X9ZMj1uVHtmPNi4tG_6QAbuL
RaGadBkekb22uJ0iwSrWc9OKi6ET70lCTYb18hbwUkzHXtTq12nNEdsDJ7Ku2wEBwMygFwErYDX
CrnPoFoah_z0UPCfv3XZLy98Dhlzw_lnx8nnCB-PCppOWRqmydvQJehPd86k&access_token=C
AACYnSxGEhsBALXHRQwfm4UoauRlZBJDVpZCiM6ZCuM3bE965F5JVBfBB8inTFdhfJ5obnonSqa
m3v8FbWhHXrhRSx4ugwAmmDaWyxmPELWqSrkrDO5ueTUXhhjiEZBTd7HjCVCSOXXhOSo3DjEVSC
lOaZBfqmXsprYyc6LJC39sroCcHYCZCv&expires_in=5183426&state=thestatepassed
现在你有一个访问令牌和一个代码(过期适用于令牌,而不是代码)。如前所述,该代码可以以通常的方式交换访问令牌,但返回的访问令牌将不同于您刚刚嵌入 URI 中的访问令牌。
但是,同样,您关心的是散列片段。
请参阅$location 上的 AngularJS 文档以访问哈希。比我更有知识的人可以谈论它如何与路由一起工作以及如何最好地抓取参数。