如何获得Instagram访问令牌

Ger*_*kay 72 instagram

我真的在努力获取Instagram的访问令牌,

我已经注册了一个新客户端,然后我使用了这个URL

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

填写客户ID并重定向Url.

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

Mar*_*vec 47

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

Longstory short - 两步:

获取代码

使用http://instagram.com/developer/clients/manage/中的信息打开https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code

获取访问令牌

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
Run Code Online (Sandbox Code Playgroud)

  • 是否有可能从`的https获取代码://api.instagram.com/oauth/authorize/的client_id = CLIENT-ID&REDIRECT_URI =重定向消息URI&RESPONSE_TYPE = code`直接?或者我真的需要另一个端点来捕获代码返回?这很复杂而烦人 (3认同)
  • 如果将response_type设置为token,则可以正常工作.它对我来说不适用于代码. (3认同)
  • 现在instagram更改了其api,我们无法提取代码 (3认同)

Que*_*est 12

到目前为止,人们发布的几乎所有回复都只涉及如何在Instagram的客户端"隐式认证"程序之后处理前端的访问令牌.根据Instagram的API文档,这种方法不太安全且不受推荐.

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

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

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

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))
    }
  }
);
Run Code Online (Sandbox Code Playgroud)

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


小智 10

之前我遇到了同样的问题,但我将网址更改为此
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token

  • 耶士! - 这是有效的 - 就像Instagram现在的工作方式一样,它应该是不太安全的基于服务器的请求的最佳答案.示例:我只需要为用户获取最后几张图像.-Uncheck禁用Instagram开发者页面的安全选项卡中的隐含OAuth. - 使用上面的URL替换值 - 从重定向URI中获取access_token现在,您可以执行简单的操作,例如https://api.instagram.com/v1/users/[CLIENT ID]/media/recent /?access_token = [ TOKEN]无论如何这些都不需要那么安全 - instagram已经完成了这样复杂的请求. (3认同)

jef*_*ind 6

Instagram API不仅适用于您,也适用于任何可能通过您的应用进行身份验证的Instagram用户.我按照Instagram Dev网站上说明进行操作.使用第一个(显式)方法,我能够在服务器上轻松地完成此操作.

步骤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>
Run Code Online (Sandbox Code Playgroud)

YOUR_CLIENT_IDYOUR_REDIRECT_URI在Instagram后端成功注册您的应用程序后,将在以下使用后提供给您YOUR_CLIENT_SECRET.

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

直接django到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'),
]
Run Code Online (Sandbox Code Playgroud)

这是response处理请求的函数,views.py:

from django.shortcuts import render
import urllib
import urllib2
import json

def response(request):
    if 'code' in request.GET:
        url = 'https://api.instagram.com/oauth/access_token'
        values = {
            'client_id':'YOUR_CLIENT_ID',
            'client_secret':'YOUR_CLIENT_SECRET',
            'redirect_uri':'YOUR_REDIRECT_URI',
            'code':request.GET.get('code'),
            'grant_type':'authorization_code'
        }
        data = urllib.urlencode(values)
        req = urllib2.Request(url, data)
        response = urllib2.urlopen(req)
        response_string = response.read()
        insta_data = json.loads(response_string)
        if 'access_token' in insta_data and 'user' in insta_data:
            #authentication success
            return render(request, 'main/response.html')
        else:
            #authentication failure after step 2
            return render(request, 'main/auth_error.html')
    elif 'error' in req.GET:
        #authentication failure after step 1
        return render(request, 'main/auth_error.html')
Run Code Online (Sandbox Code Playgroud)

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


Cal*_*ert 6

2019年工作的简单方法

在安全性auth下禁用隐式oauth,然后加载:

https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token
Run Code Online (Sandbox Code Playgroud)

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


小智 2

在您授权应用程序使用您的 Instagram 数据后,访问令牌将以 URI 片段的形式返回。它应该类似于以下内容: 在此输入图像描述

  • 我仍然完全迷失了,我基本上只是将我的 Instagram feed 拉到我的网站上,所以我不知道如何获得你上面显示的内容 (5认同)