我使用 Nest 作为 Salesforce 的身份验证提供程序,目的是从 Force.com 调用 Nest API。我遇到的问题是 Neststate
在 OAuth 2.0 流程中破坏了参数。
这是从 Salesforce 到 Nest 的重定向。为了清楚起见,我插入了换行符:
https://home.nest.com/login/oauth2?
response_type=code&
client_id=16188153-52f1-4ac9-93ee-83ccab5cbd2f&
redirect_uri=https%3A%2F%2Flogin.salesforce.com%2Fservices%2Fauthcallback%2F00DE0000000cjOBMAY%2FNest&
state=jMG%2F2bzDEPisWyKsH7yVPHCrHdHxRAzYhG3Aq7VBF%2FrBLmW49eGj3DEzCLg0aGIvbOadXUxf1pwiDIPupqOMTZ%2BQbuThvTf58y2zXHwDNcoAvg%3D%3D
state
注意参数中的“百分比编码”
这是返回到 Salesforce 的重定向:
https://login.salesforce.com/services/authcallback/00DE0000000cjOBMAY/Nest?
state=jMG/2bzDEPisWyKsH7yVPHCrHdHxRAzYhG3Aq7VBF/rBLmW49eGj3DEzCLg0aGIvbOadXUxf1pwiDIPupqOMTZ+QbuThvTf58y2zXHwDNcoAvg==&
code=UCMG2TEF9S69CQX2
注意,state
不再是 URL 编码。而且,特别是,由于它包含一个+
字符,当 Salesforce 对其进行解码时,它+
被解释为一个空格,并且状态与 Salesforce 发送的不匹配,因此身份验证失败。
巢 - 请解决这个问题!