0

我正在使用 MYOB 的 accountright Live api v2。我想在不进入登录屏幕的情况下获取访问令牌。当我发送 CURL 请求以获取访问令牌时,我被重定向到 myob 登录屏幕,如何跳过它?我发送的请求是 url:

' https://secure.myob.com/oauth2/v2/authorize '

发送的参数是:

Array
(
    [client_id] => xxxxxxxxxxxxxxxxxxxxxxxx
    [client_secret] => xxxxxxxxxxxxxxxxxxxxx
    [scope] => CompanyFile
    [code] => XXXXXXXXXXXXXX
    [redirect_uri] => http://myappcodeonmydomain.com
    [grant_type] => authorization_code
)
4

2 回答 2

0

在您向 API 发出初始请求以获取访问令牌后,您还应该获得一个刷新令牌。访问令牌会在一段时间后过期,需要刷新。

身份验证文档中的刷新访问令牌部分:

访问令牌的有效期有限,当您收到一个令牌时,您还将收到一个到期时间和一个刷新令牌。一旦您的访问令牌过期,它就不能再用于访问 API。因此,您需要触发刷新。您可以通过发布以下参数来做到这一点:

'client_id' // your API Key 
'client_secret' // your API Secret
'refresh_token' // your refresh token 
'grant_type' // this should say refresh_token

到这个网址:https ://secure.myob.com/oauth2/v1/authorize

注意:虽然数据被格式化为 URL 查询字符串,但您不会 通过 URL 传递信息(这将是一个 GET 请求),您 必须正文中传递查询字符串并将其发布到 https: //secure.myob .com/oauth2/v1/authorize

例如,我将访问和刷新令牌以及未来 10 分钟的预期到期时间存储在数据库中。如果在那之后要发出请求,我会调用刷新过程来更新访问令牌,并且能够以我快乐的方式继续进行,而无需每次都显示登录提示。

您确实需要至少显示一次以找出正在登录的用户以及要连接的公司文件的 GUID。

于 2016-10-14T05:19:34.543 回答
0

如果您是在谈论第一次身份验证,那么就没有办法做到这一点。您必须通过返回 url 将用户重定向到登录页面。如果您正在谈论刷新令牌,那么这很容易。我不确定您如何实现 API 连接。我正在使用 myob ruby​​ sdk。ruby sdk 非常易于使用,它将为您完成所有这些身份验证操作。:)

于 2016-11-04T07:33:27.720 回答