如何获得Instagram访问令牌

时间:2013-05-11 11:18:14

标签: instagram

我真的在努力获取Instagram的访问权限,

我已注册新客户,然后使用此网址

https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code

填写客户ID并重定向网址。

然后,我被重定向到一个页面,在该页面中显示了Url中的代码,但是从那里我没有线索,其中id然后获取我的访问令牌。

13 个答案:

答案 0 :(得分:44)

官方API文档的链接是http://instagram.com/developer/authentication/

Longstory short - 两步:

获取代码

使用https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code

中的信息打开http://instagram.com/developer/clients/manage/

获取访问令牌

curl \-F 'client_id=CLIENT-ID' \
    -F 'client_secret=CLIENT-SECRET' \
    -F 'grant_type=authorization_code' \
    -F 'redirect_uri=YOUR-REDIRECT-URI' \
    -F 'code=CODE' \
    https://api.instagram.com/oauth/access_token

答案 1 :(得分:11)

到目前为止,人们发布的几乎所有回复都只涵盖了如何在Instagram的客户端"隐式身份验证"之后处理前端的访问令牌。程序。根据Instagram的API文档,此方法不太安全且未经推荐。

假设您正在使用服务器,Instagram文档在提供有关交换令牌代码的明确答案时失败,因为它们只提供了cURL请求的示例。基本上,您必须使用提供的代码和所有应用程序的信息向其服务器发出POST请求,并且它们将返回包含用户信息和令牌的用户对象。

我不知道你在写什么语言,但是我在Node.js中用请求npm模块解决了这个问题,你可以找到here

我通过网址解析并使用此信息发送帖子请求

var code = req.url.split('code=')[1];

request.post(
  { form: { client_id: configAuth.instagramAuth.clientID,
            client_secret: configAuth.instagramAuth.clientSecret,
            grant_type: 'authorization_code',
            redirect_uri: configAuth.instagramAuth.callbackURL,
            code: code
          },
    url: 'https://api.instagram.com/oauth/access_token'
  },
  function (err, response, body) {
    if (err) {
      console.log("error in Post", err)
    }else{
      console.log(JSON.parse(body))
    }
  }
);

当然用您自己的信息替换configAuth。您可能没有使用Node.js,但希望此解决方案可以帮助您将自己的解决方案翻译成您使用它的任何语言。

答案 2 :(得分:9)

答案 3 :(得分:6)

Instagram API不仅适用于您,也适用于任何可能通过您的应用进行身份验证的Instagram用户。我跟着instructions on the Instagram Dev website。使用第一个(显式)方法,我能够在服务器上轻松地完成此操作。

步骤1)在您的网页上添加一个链接或按钮,用户可以点击该链接或按钮来启动身份验证过程:

<a href="https://api.instagram.com/oauth/authorize/?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&response_type=code">Get Started</a>
在Instagram后端成功注册您的应用后,

YOUR_CLIENT_IDYOUR_REDIRECT_URI将与您一起使用{/ 1}}。

步骤2)在您为应用定义的URI(与YOUR_CLIENT_SECRET相同)中,您需要接受来自Instagram服务器的响应。 Instagram服务器将为您提供请求中的YOUR_REDIRECT_URI变量。然后,您需要使用此code以及有关您的应用的其他信息,直接从您的服务器发出另一个请求以获取code。我在使用Django框架的python中做了这个,如下所示:

将django指向access_token中的response函数:

urls.py

以下是处理请求的from django.conf.urls import url from . import views app_name = 'main' urlpatterns = [ url(r'^$', views.index, name='index'), url(r'^response/', views.response, name='response'), ] 函数response

views.py

这只是一种方式,但在PHP或任何其他服务器端语言中,该过程应该几乎相同。

答案 4 :(得分:3)

简单方法

在安全认证下禁用隐式oauth,然后加载:

https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token

在您的帐户中指定REDIRECT-URI并完全按照指定键入。

答案 5 :(得分:2)

在您授权应用程序使用您的Instagram数据后,访问令牌将作为URI片段返回。它应该类似于以下内容: enter image description here

答案 6 :(得分:1)

试试这个:

http://dmolsen.com/2013/04/05/generating-access-tokens-for-instagram/

获取代码后,您可以执行以下操作:

curl -F 'client_id=[your_client_id]' -F 'client_secret=[your_secret_key]' -F 'grant_type=authorization_code' -F 'redirect_uri=[redirect_url]' -F 'code=[code]' https://api.instagram.com/oauth/access_token

答案 7 :(得分:0)

如果您正在寻找相关说明,请查看此文章post。如果您使用的是C#ASP.NET,请查看此repo

答案 8 :(得分:0)

这对我来说很好用:

http://jelled.com/instagram/access-token

仅供参考,我将它与jQuery Instagram插件结合使用,你可以在这里找到它; http://potomak.github.com/jquery-instagram

答案 9 :(得分:0)

通过使用https://www.hurl.it/,我能够看到: { “代码”:400, “error_type”:“OAuthException”, “error_message”:“未找到匹配代码或已使用匹配代码。” }

所以:你必须为每个请求获取新代码。

答案 10 :(得分:0)

如果您不想构建服务器端,例如只在客户端(Web应用程序或移动应用程序)进行开发,则可以选择隐式身份验证

正如文件所述,首先使用

发出https请求
  

https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token

填写您指定的 CLIENT-ID REDIRECT-URL

然后进入登录页面,但最重要的是 是用户正确登录后如何获取访问令牌。

用户点击登录按钮后,同时输入正确的帐号和密码, 网页将重定向到您指定的网址,然后是新的访问令牌。

  

http://your-redirect-uri#access_token=ACCESS-TOKEN

我不熟悉javascript,但在Android工作室中, 这是添加监听器 的一种简单方法,它可以监听网页覆盖新网址的网址(重定向事件), 然后它会将重定向url字符串传递给你,这样你就可以轻松地将其拆分以获得访问令牌,如:

String access_token = url.split(&#34; =&#34;)[1];

意味着将url分解为每个&#34; =&#34;中的字符串数组。字符,然后访问令牌显然存在于[1]。

答案 11 :(得分:0)

100%使用此代码

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="dsfd">
  <table id="spreadsheet">
    <tr>
      <td></td>
      <th></th>
      <th></th>
      <th></th>

      <th></th>
      <th></th>
    </tr>
    <tr>
      <th></th>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
  </table>
</div>

答案 12 :(得分:-1)

去管理clinet页面:

http://www.instagram.com/developer/

设置重定向网址

然后:

使用此代码获取访问令牌:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>tst</title>
<script src="../jq.js"></script>
<script type="text/javascript">
       $.ajax({
            type: 'GET',
            url: 'https://api.instagram.com/oauth/authorize/?client_id=CLIENT-‌​ID&redirect_uri=REDI‌RECT-URI&response_ty‌pe=code'
            dataType: 'jsonp'}).done(function(response){
                var access = window.location.hash.substring(14);
                //you have access token in access var   
            });
</script>
</head>
<body>  
</body>
</html>