【问题标题】:Instagram auth responds with 400 (Bad Request)Instagram 身份验证响应 400(错误请求)
【发布时间】:2016-01-07 19:45:27
【问题描述】:

我正在尝试对 Instagram API 进行身份验证,但我的请求在第 3 步失败:Request the access_token。

请注意,响应内容中没有消息。错误很简单,Bad Request。

为什么我的请求不通过?

注意:我的请求是使用Net::OAuth2 perl 库创建和发送的。

请求

'_protocol' => 'HTTP/1.1',
'_content' => 'grant_type=authorization_code&redirect_uri=http%3A%2F%2Fredirecturi.net%3A4011%2Ffoo%2Fbar%2Ffoobar_callback&client_id=XXX&client_secret=YYY&code=ab1ef9ea901f401eb2ae798617e3b098',
'_uri' => bless( do{\(my $o = 'https://api.instagram.com/oauth/access_token')}, 'URI::https' ),
'_headers' => bless( {
    'user-agent' => 'libwww-perl/6.05',
    'connection' => 'Keep-Alive',
    'content-type' => 'application/x-www-form-urlencoded',
    '::std_case' => {
        'if-ssl-cert-subject' => 'If-SSL-Cert-Subject'
    },
    'authorization' => 'Basic XXX',
    'host' => 'api.instagram.com:443'
    }, 'HTTP::Headers' ),
'_method' => 'POST',
'_uri_canonical' => $VAR1->{'_request'}{'_uri'}
}, 'HTTP::Request' )
 

回复

'_protocol' => 'HTTP/1.1',
'_content' => '',
'_rc' => '400',
'_headers' => bless( {
    'connection' => 'close',
    'client-response-num' => 1,
    'date' => 'Thu, 07 Jan 2016 19:17:52 GMT',
    'client-ssl-cert-issuer' => '/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA',
    'client-ssl-cipher' => 'ECDHE-RSA-AES128-SHA',
    'client-peer' => '66.220.158.81:443',
    'content-length' => '0',
    '::std_case' => {
        'client-date' => 'Client-Date',
        'client-response-num' => 'Client-Response-Num',
        'client-ssl-cert-subject' => 'Client-SSL-Cert-Subject',
        'client-ssl-cert-issuer' => 'Client-SSL-Cert-Issuer',
        'client-ssl-cipher' => 'Client-SSL-Cipher',
        'client-peer' => 'Client-Peer',
        'client-ssl-socket-class' => 'Client-SSL-Socket-Class'
    },
    'client-date' => 'Thu, 07 Jan 2016 19:17:52 GMT',
    'content-type' => 'text/plain',
    'client-ssl-cert-subject' => '/C=US/ST=CA/L=Menlo Park/O=Instagram LLC/CN=*.instagram.com',
    'server' => 'proxygen',
    'client-ssl-socket-class' => 'IO::Socket::SSL'
}, 'HTTP::Headers' ),
'_msg' => 'Bad Request',
}, 'HTTP::Response' );

【问题讨论】:

    标签: perl api oauth-2.0 instagram instagram-api


    【解决方案1】:

    你已经解决了吗?

    不管怎样,我最近也遇到了同样的问题(使用 C#,但问题原理看起来一样),所以这个答案是为那些需要方向的人准备的。有一些重要的事情需要考虑,但 Instagram 开发者文档中并没有那么清楚。

    在第 3 步中,您不会通过 URL 传递 auth 参数,您需要将其作为正文内容(字面意思)传递。

    其他常见问题是标题参数,这些必须是:

    Accept: "application/json"
    ContentType: "application/x-www-form-urlencoded"
    

    我希望这个答案可以为其他开发者节省时间。

    其他参考:Here 和 Here。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-26
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多