ASP.net MVC中SurveyMonkey API认证后续操作咨询
嘿,我来帮你梳理下后续的操作流程,既然你已经搞定了第一步(应该是注册应用、配置好http://localhost作为重定向URL,拿到了Client ID和Client Secret),接下来按下面的步骤走就行,完全适配你本地运行应用的场景:
1. 构造授权请求URL,引导用户跳转
你需要生成一个授权URL,让自己(本地测试的话就是你自己作为用户)跳转到SurveyMonkey的授权页面,URL结构如下:
https://api.surveymonkey.net/oauth/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=http://localhost
把YOUR_CLIENT_ID替换成你应用的实际Client ID就行。这里用的是授权码模式(response_type=code),非常适合本地应用的认证场景。
打开这个URL后,会跳转到SurveyMonkey的登录页面,登录后页面会询问是否允许你的应用访问数据,点击同意后就会自动跳回http://localhost,此时URL的查询参数里会带上一个code参数——这就是授权码,是下一步换取令牌的关键。
2. 用授权码换取访问令牌
拿到授权码后,你需要向SurveyMonkey的令牌端点发送POST请求,换取访问令牌(Access Token):
- 请求URL:
https://api.surveymonkey.net/oauth/token - 请求头:必须包含
Content-Type: application/x-www-form-urlencoded - 请求体(表单格式):
把所有占位符替换成实际值:client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&code=AUTHORIZATION_CODE&redirect_uri=http://localhost&grant_type=authorization_codeYOUR_CLIENT_ID和YOUR_CLIENT_SECRET是你应用的密钥,AUTHORIZATION_CODE是上一步拿到的授权码。
发送请求后,你会收到一个JSON响应,里面包含access_token(后续调用API的核心凭证)、refresh_token(用来刷新过期的访问令牌)、expires_in(令牌有效期)等信息,把这些信息妥善保存好。
3. 使用访问令牌调用SurveyMonkey API
现在你就可以用access_token调用各种SurveyMonkey API接口了。所有请求的头信息里都需要带上:
Authorization: Bearer YOUR_ACCESS_TOKEN
举个简单的例子,用curl调用获取当前用户信息的接口:
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" https://api.surveymonkey.net/v3/users/me
如果请求成功返回用户数据,就说明认证完全生效啦!
4. 处理令牌过期(可选但重要)
访问令牌是有有效期的,过期后不用重新走一遍授权流程,直接用refresh_token就能获取新的访问令牌:
- 请求URL还是
https://api.surveymonkey.net/oauth/token - 请求体换成:
替换对应占位符后发送请求,就能拿到新的client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&refresh_token=YOUR_REFRESH_TOKEN&grant_type=refresh_tokenaccess_token,继续正常调用API。
另外要注意:本地运行应用时,要确保你的服务能捕获到重定向URL里的code参数,不然没法进入下一步换取令牌的环节哦。
内容的提问来源于stack exchange,提问作者Sartorialist

