SAP Concur新的Oauth2框架是在应用程序中实现统一令牌身份验证机制的一种非常简单的方法。下面是一个四步指南,帮助您加快速度并调用SAP Concur API。

注意:可以找到2017年以前授权(已弃用)文档在这里

1.获取您的应用程序clientID和clientSecret

在你能得到一个accessToken,您需要注册一个应用程序与SAP Concur。您可以通过联系您的合作伙伴实施管理器或合作伙伴客户管理器来做到这一点。一旦你注册了申请,你将会收到clientIdclientSecret地理位置.的clientId是应用程序唯一的uid4标识符,而clientSecret是应用程序的密码。您将使用此凭据为应用程序本身或代表用户获取令牌。的地理位置是初始化所有新连接的默认基本URI。

2.获取访问令牌

为了让应用程序调用SAP Concur API,您需要获得accessToken代表用户、公司或应用程序。有多种方法可以得到accessToken透过各项资助(密码授权客户端凭证一次性密码) .

本节提供生成访问令牌的快速入门指南。如果您正在开发应用程序以获得应用中心认证,或作为TripLink供应商,请参阅认证文件对于您的应用程序必须支持的授权类型。

为简单起见,我们将使用Password授予流作为示例。当您需要对用户进行身份验证时,将使用密码授予流用户名密码.这通常是从SAP Concur应用程序中保留的(即用户的凭证将被捕获和存储的地方),但在这里用于演示目的。

当你打电话时,你将使用你的应用程序地理位置作为基URI,后面跟着端点。例如,如果您的地理位置是https://us.api.concursolutions.com,您将调用https://us.api.concursolutions.com/oauth2/v0/token。

当你第一次要求accessToken一个refreshToken也回来了。在某些条件下refreshToken不是回来了。这是用来得到一个新的accessToken当一个已经过期。(详见下文)

示例shell脚本使用cURL获取accessToken

oauth2_basehttps://us.api.concursolutions.com/oauth2用户名< concur_username >。john.doe@gmail.com密码<密码>。密码client_id< clientId >。e01f725d-b4ce-4ce3-a664-b670cb5876cb0client_secret< clientSecret >。35 c3bd92 fcb8 - 405 e - a886 - 47 - ff3fba5664旋度- x帖子- h“concur-correlationid: nameofapp”oauth2_base美元/ v0 /令牌”——数据“用户名=美元的用户名密码=美元的密码&grant_type = password&client_secret =client_secret美元client_id =美元client_id

完整的文档:https://developer.concur.com/api-reference/authentication/apidoc.html#password_grant

存储令牌和地理位置。

3.使用访问令牌调用API

一旦你有了accessToken,需要在授权头中以。的形式提供授权:无记名< accessToken >当进行HTTPS调用时。的accessToken是一个大字符串,看起来像这样:

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjE0NTU2MTQzNDYifQ.eyJhdWQiOiIqIiwic3ViIjoiaHR0cDovL21zcGNzcHJzcnFhLmNvbmN1ci5jb25jdXJ0ZWNoLm9yZzozMDAzL3Byb2ZpbGUtc2VydmljZS92MS91c2Vycy83NjAwOUFEMy1GNzdCLTREOTgtQTIxQS01NTNDOUM5MTc5RjAiLCJpc3MiOiJodHRwczovL2NvbmN1ci5jb20iLCJleHAiOjE0NzM4OTUxMjksImxlZ2FjeV9hcHBsaWNhdGlvbl9pZCI6MTUwMDA2MzY1OSwidXNlclVSSSI6 imh0dha6ly9tc3bjc3byc3jxys5jb25jdxiuy29uy3vydgvjac5vcmc6mzawmy9wcm9mawxllxnlcnzpy2uvdjevdxnlcnmvnzywmdlbrdmtrjc3qi00rdk4lueymuetntuzqzldote3ouywiiwidxnlcnv1awqioii3njawoufemy1gnzdcltreotgtqtixqs01ntndoum5mtc5rjailcjuymyioje0nzm4ote1mjksimh0dhbzoi8vyxbplmnvbmn1cnnvbhv0aw9ucy5jb20vyxbwijoiahr0chm6ly9hcgkuy29uy3vyc29sdxrpb25zlmnvbs9hchatbwdtdc92mc9hcHBzL2UwMTBlMjVkLWI0Y2UtNGNlMy1hN2U0LWI2NzBjYjFhZGNiMCIsImh0dHBzOi8vYXBpLmNvbmN1cnNvbHV0aW9ucy5jb20vc2NvcGVzIjpbIkNDQVJEIiwiQ09NUEQiLCJVU0VSIiwidXNlcl9yZWFkIiwiRU1FUkciLCJKT0JMT0ciLCJFUkVDUFQiLCJJVElORVIiLCJGSVNWQyIsIkxJU1QiLCJQQVNTViIsIkNPTkZJRyIsIkZPUCIsIkdIT1NUIiwiQ09OUkVRIiwiVFJJUElUIiwiQ09NUEFOWSIsInByb2ZpbGUiLCJFVlMiLCJlbWFpbCIsIlRSVlBUUyIsIkFUVEVORCIsIklOVlBPIiwiTk9USUYiLCJUUlZSRVEiLCJTVVBTVkMiLCJFWFBSUFQiLCJhZGRyZXNzIiwiRVhUUkNUIiwiUEFZQkFUIiwid3Jvbmdfc2NvcGUiLCJJTlZQTVQiLCJJTUFHRSIsIlRBWElOViIsIlJDVElNRyIsIlVOVVRYIiwiVFdTIiwiVE1DU1AiLCJCQU5LIiwiSU5WVkVOIiwib3BlbmlkIiwiTVRORyIsIklOU0dIVCIsIlRSVlBSRiIsIklOVlRWIiwiTUVESUMiLCJUU0FJIl0sImlhdCI6MTQ3Mzg5MTUyOX0.QHY4Mc5A3J981-HDv7KUdgS4tUI-qnmQAxwe9J6DHxuMmYSoGEYZ0dsnLnqc2lO2iVJK6Pg3EBZTArq8_vzV2FK7tA4-IT1eCEHo1e-RWZyWLnR7P56SvZozXpY73daovSH7572HrUm21FXcyLmdaLZyo2LfFcChaghbSCjm1Jg1duH-pLPUW4d89 -_pdakmyxfV3GCm2N_XQXoRhNYAAiZcG8UfxEn3TpMHJ96F2n6keJanT_Sn2Sek_sH2EmeeCpg5-jDe0fvLvr1-gY5t0ifq8QBKWHSUUIrGbQvseD6CGzfyiFUqVypN2lukfWACR-26otN50c0OzY6kgY06RA

当你收到accessToken,将其与代币一起存储地理位置.那地理位置将是所有后续调用的基本URI。

武装的accessToken您可以开始调用SAP Concur API。下面是一个使用cURL(为令牌使用适当的基本URI位置)在生产环境中检索User配置文件信息的示例。基础uri引用

旋度- k- v- h“接受:application / json”- h“授权:持票人eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjE0NTU2MTQzNDYifQ.eyJhdWQiOiIqIiwic3ViIjoiaHR0cDovL21zcGNzcHJzcnFhLmNvbmN1ci5jb25jdXJ0ZWNoLm9yZzozMDAzL3Byb2ZpbGUtc2VydmljZS92MS91c2Vycy83NjAwOUFEMy1GNzdCLTREOTgtQTIxQS01NTNDOUM5MTc5RjAiLCJpc3MiOiJodHRwczovL2NvbmN1ci5jb20iLCJleHAiOjE0NzM4OTUxMjksImxlZ2FjeV9hcHBsaWNhdGlvbl9pZCI6MTUwMDA2MzY1OSwidXNlclVSSSI6 imh0dha6ly9tc3bjc3byc3jxys5jb25jdxiuy29uy3vydgvjac5vcmc6mzawmy9wcm9mawxllxnlcnzpy2uvdjevdxnlcnmvnzywmdlbrdmtrjc3qi00rdk4lueymuetntuzqzldote3ouywiiwidxnlcnv1awqioii3njawoufemy1gnzdcltreotgtqtixqs01ntndoum5mtc5rjailcjuymyioje0nzm4ote1mjksimh0dhbzoi8vyxbplmnvbmn1cnnvbhv0aw9ucy5jb20vyxbwijoiahr0chm6ly9hcgkuy29uy3vyc29sdxrpb25zlmnvbs9hchatbwdtdc92mc9hcHBzL2UwMTBlMjVkLWI0Y2UtNGNlMy1hN2U0LWI2NzBjYjFhZGNiMCIsImh0dHBzOi8vYXBpLmNvbmN1cnNvbHV0aW9ucy5jb20vc2NvcGVzIjpbIkNDQVJEIiwiQ09NUEQiLCJVU0VSIiwidXNlcl9yZWFkIiwiRU1FUkciLCJKT0JMT0ciLCJFUkVDUFQiLCJJVElORVIiLCJGSVNWQyIsIkxJU1QiLCJQQVNTViIsIkNPTkZJRyIsIkZPUCIsIkdIT1NUIiwiQ09OUkVRIiwiVFJJUElUIiwiQ09NUEFOWSIsInByb2ZpbGUiLCJFVlMiLCJlbWFpbCIsIlRSVlBUUyIsIkFUVEVORCIsIklOVlBPIiwiTk9USUYiLCJUUlZSRVEiLCJTVVBTVkMiLCJFWFBSUFQiLCJhZGRyZXNzIiwiRVhUUkNUIiwiUEFZQkFUIiwid3Jvbmdfc2NvcGUiLCJJTlZQTVQiLCJJTUFHRSIsIlRBWElOViIsIlJDVElNRyIsIlVOVVRYIiwiVFdTIiwiVE1DU1AiLCJCQU5LIiwiSU5WVkVOIiwib3BlbmlkIiwiTVRORyIsIklOU0dIVCIsIlRSVlBSRiIsIklOVlRWIiwiTUVESUMiLCJUU0FJIl0sImlhdCI6MTQ3Mzg5MTUyOX0.QHY4Mc5A3J981-HDv7KUdgS4tUI-qnmQAxwe9J6DHxuMmYSoGEYZ0dsnLnqc2lO2iVJK6Pg3EBZTArq8_vzV2FK7tA4-IT1eCEHo1e-RWZyWLnR7P56SvZozXpY73daovSH7572HrUm21FXcyLmdaLZyo2LfFcChaghbSCjm1Jg1duH-pLPUW4d89 -_pdakmyxfV3GCm2N_XQXoRhNYAAiZcG8UfxEn3TpMHJ96F2n6keJanT_Sn2Sek_sH2EmeeCpg5-jDe0fvLvr1-gY5t0ifq8QBKWHSUUIrGbQvseD6CGzfyiFUqVypN2lukfWACR-26otN50c0OzY6kgY06RA”https://us.api.concursolutions.com/profile/v1/me

响应是这样的:

“地址”“类型”“家”“streetAddress”""“位置”""“地区”""“邮政编码”""“国家”“我们”},“类型”“工作”“streetAddress”""“位置”""“地区”""“邮政编码”""“国家”“我们”],“travelIds”“标识”85663431“companyId”“63 e447f6-a6a7-4b70-a951-10f45d693b43”“companyInternalId”222458“setId”91157361“ruleClassId”394103“travelConfigId”0},“元”“创建”“2016 - 06 - 08 - t00:00:00.000”“lastModified”“2016 - 08 - 22 - t14:32:00.000”“resourceType”“EnterpriseUser”},“displayName”“棕色”“名称”“格式化”“布朗特里”“familyName”“棕色”“givenName”“特里”“middleName”""“honorificPrefix”""“honorificSuffix”""},“phonenumber”“类型”“家”“价值”“电话:+ 1 - 4251231244”“主”“通知”“countryCode”“我们”“countryISDCode”“1”},“类型”“工作”“价值”“电话:+ 1 - 4251231234,ext = "“主”“通知”“countryCode”“我们”“countryISDCode”“1”],com:同意:员工:1.0”“employeeId”“brown@brown-sandbox.com”“职务高低”""“managerId”“orgUnitId”},“dateOfBirth”“模式”“com:同意:用户:1.0”com:同意:员工:1.0”],“活跃”真正的“id”“e01f725d-b4ce-4ce3-a664-b670cb5876cb0”com:同意:TravelPreferences: 1.0”“空气”“座位”“interrowPosition”“sectionPosition”},“吃饭”“DontCare”“homeAirport”},“铁路”“空间”“DontCare”“吃饭”“DontCare”“bedCategory”“DontCare”“fareSpaceComfort”“DontCare”“甲板”“DontCare”“教练”“DontCare”“床上”“DontCare”“泊位”“DontCare”“noiseComfort”“DontCare”“应急”“DontCare”“座位”“DontCare”},“汽车”“吸烟”“DontCare”“carType”“DontCare”“传播”“DontCare”“gpsEnabled”“skirack”},“酒店”“earlyCheckin”“备注”“池”“roomService”“foamPillows”“accessForBlind”“accessForWheelchair”“健身”“将”“DontCare”“餐馆”“rollawayBed”“吸烟”“DontCare”“婴儿床”},“性别”“电子邮件”“价值”“brown@brown-sandbox.com”“类型”“业务”“通知”真正的],“userType”“企业”

完整的文档:https://developer.concur.com/api-reference/user/

4.访问令牌到期并获得一个新的令牌

访问令牌有一个默认值一个小时一生。为了获得新鲜的accessToken您需要使用Refresh Grant调用认证端点。这将返回一个全新的accessToken和一个refreshToken.刷新令牌有一个默认值6个月一生。客户端通常会存储refreshToken以及其他用户元数据,如登录信息和唯一标识符。

利用地理位置对于令牌,这里有一个cURL调用的示例来获得一个新的accessToken

旋度- x帖子“https://us.api.concursolutions.com/oauth2/v0/token”——数据“client_id =美元client_idclient_secret =client_secret美元&grant_type = refresh_token&refresh_token = <老刷新令牌>”

完整的文档:https://developer.concur.com/api-reference/authentication/apidoc.html#refresh_token

现在您已经进行了第一次调用,请阅读更多关于SAP Concur api的内容,以及它们如何增强您的应用程序或解决您的业务需求。

裁判:https://developer.concur.com/api-reference/index.html