标签: twitch-api

Twitch OAuth access_token 而不是 Bearer 令牌

Twitch 有新的 API 和 V5 API,我想完全使用 V5 API,因为那个 API 提供了更多关于频道的信息。当我使用浏览器开发工具中的评估令牌时,API 正在工作。

在此处输入图片说明

但是当我使用通过 Omniauth 授权获得的asset_token 时,API 无法正常工作,并且{"error":"Gone","status":410,"message":"It's time to kick ass and serve v3... and I'm all outta v3. See https://dev.twitch.tv/docs"}经常出现类似错误。文档说 V5 API 仍在工作(尽管已弃用)。

在此处输入图片说明

Helix 和 Kraken API 具有不同类型的令牌(BearerOAuth

在此处输入图片说明

如何OAuth在用户身份验证后准确获取access_token 以便能够使用 V5 API?来自浏览器开发工具的令牌与新 API 和 V5 API 一样工作,但从 Omniauth 获得的令牌仅适用于新 API。

解决了

访问令牌可用于新 API 和 V5 API。使用 V5 API 只需要在请求中添加Accept标头application/vnd.twitchtv.v5+json

api twitch twitch-api

5
推荐指数
0
解决办法
661
查看次数

如何在discord.py中循环任务

我正在尝试制作我自己的小不和谐机器人,它可以从 Twitch 获取信息,但我对如何使机器人循环并检查条件感到困惑。

我希望机器人每隔几秒钟循环一段代码,以检查指定的 twitch 频道是否处于活动状态。


代码

import discord
from discord.ext import commands, tasks
from twitch import TwitchClient
from pprint import pformat


client = TwitchClient(client_id='<twitch token>')

bot = commands.Bot(command_prefix='$')

@bot.event
async def on_ready():
    print('We have logged in as {0.user}'.format(bot))

@bot.command()
async def info(ctx, username):
    response = await ctx.send("Querying twitch database...")
    try:
        users = client.users.translate_usernames_to_ids(username)
        for user in users:
            print(user.id)
            userid = user.id
        twitchinfo = client.users.get_by_id(userid)
        status = client.streams.get_stream_by_user(userid)
        if status == None:
            print("Not live")
            livestat = twitchinfo.display_name + "is not …
Run Code Online (Sandbox Code Playgroud)

python-3.x twitch discord twitch-api

5
推荐指数
3
解决办法
2万
查看次数

使用 SWR 时如何正确传递标头?

我决定尝试将大部分 API 函数转移到 SWR,因为它让我可以做更多事情!

问题

然而,我遇到了一个巨大的问题,我无法弄清楚如何正确地将标头传递到 SWR 中。我已经查看了文档和更多内容,但似乎没有任何效果。我正在使用 Twitch API、Next.js 和 NextAuth 来处理令牌、会话等。我在下面留下了我的 GitHub 存储库以及我当前尝试使用的代码。

笔记:

如果还发生错误,我控制台会记录错误返回,当我访问页面时,/dash它说failed to load还没有错误的控制台日志?

Github 仓库

import axios from "axios";
import Link from "next/link";
import {
  VStack,
  Heading,
  Divider,
  Text,
  Box,
  Badge,
  Center,
} from "@chakra-ui/react";
import { useSession } from "next-auth/react"
import useSWR from 'swr'

const fetcher = (url) => {
  const { data: session, status } = useSession()
  axios
    .get(url, { 
        headers: { 
          'Authorization': `Bearer ${session.accessToken}`,
          'Client-Id': `${process.env.TWITCH_CLIENT_ID}`
        }}) …
Run Code Online (Sandbox Code Playgroud)

javascript next.js twitch-api next-auth swr

4
推荐指数
1
解决办法
4341
查看次数

将自定义 Oauth 提供程序与 firebase.auth().signInWithRedirect 集成?

我使用Instagram 示例设置了 Twitch OAuth 集成,现在我可以通过打开popup.html示例提供的页面来登录我的应用程序。

这是我改编的代码:

'use strict';

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const cookieParser = require('cookie-parser');
const crypto = require('crypto');
const { AuthorizationCode } = require('simple-oauth2');
const fetch = require('node-fetch');

// Firebase Setup
const admin = require('firebase-admin');
// @ts-ignore
const serviceAccount = require('./service-account.json');
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: `https://${process.env.GCLOUD_PROJECT}.firebaseio.com`,
});

const OAUTH_REDIRECT_URI = `https://${process.env.GCLOUD_PROJECT}.firebaseapp.com/popup.html`;;
const OAUTH_SCOPES = 'user:read:email';

/**
 * Creates a configured simple-oauth2 client for Twitch.
 */
function twitchOAuth2Client() {
  // Twitch OAuth …
Run Code Online (Sandbox Code Playgroud)

oauth-2.0 firebase twitch-api

3
推荐指数
1
解决办法
2232
查看次数

SWR 在每个 api 调用中都会公开 client-id 和 Bearer token,我应该担心,对吧

长话短说,我刚刚完成了使用 NextJs、NextAuth 和 SWR 构建应用程序的工作,我使用 SWR 调用多个 Twitch API,以验证 Twitch API 我使用我的 Twitch 应用程序 Client-Id 和登录用户的 Bearer 令牌取自 NextAuth 的会话对象。

我担心的是,每当 SWR 执行 API 函数来用数据填充页面或更新页面时,您可以在 Chrome 或 Firefox 开发工具中捕获网络调用时轻松查看请求标头这里。这主要是因为这是一个生产环境,而且这种情况仍然会发生,这也违反了 Twitch 开发人员文档,并且肯定有“警告:将您的令牌视为密码。例如,切勿在任何公共 URL 中使用访问令牌,并且切勿在任何网页上显示令牌,无需单击即可反混淆。

有没有办法或解决方案来隐藏这些?

现在我的下一个最好的问题是我怎样才能阻止这种情况发生,他们是一种方法吗?

javascript next.js twitch-api swr

3
推荐指数
1
解决办法
726
查看次数

Axios响应数据替换

我正在尝试使用Twitch API学习Axios和Vue。我正在从该API提取数据,并且有thumbnail_url用于通道的缩略图,但是我必须更改该数据的宽度高度,因为它是这样来的;

https://static-cdn.jtvnw.net/previews-ttv/live_user_shroud-{width}x{height}.jpg
Run Code Online (Sandbox Code Playgroud)

而我正试图这样做。

beforeMount(){
  helix.get('streams?language=en').then((response) => {
    for(var i=0; i < response.data.data.length; i++){
      response.data.data[i].thumbnail_url.replace("width", "40")
    }
    console.log(response.data.data)
  this.results = response.data.data
    })
    .catch(function (error) {
     console.log(error);
     });
},
Run Code Online (Sandbox Code Playgroud)

其实,我不明白什么是行不通的。我知道我错过了一点。如果有人可以帮助我,那就太好了。并且,如果这不是正确的方法,那么正确的方法是什么?非常感谢。

twitch vue.js axios twitch-api

2
推荐指数
1
解决办法
359
查看次数

如何动态获取 NGINX 代理的 API 访问令牌

我开始尝试使用 iOS 应用程序的 IGDB API。几天前,IGDB 推出了 V4,现在需要通过 oAuth2 向 Twitch 授权才能接收应用程序访问令牌。

凭借我糟糕的后端知识(我昨天开始学习 NGINX),我设法设置了一个 NGINX Web 服务器,它代理对 IGDB API 的请求并将应用程序访问令牌注入到 HTTP 标头中。目前这工作正常。

我的 proxy.conf 包含在 nginx.conf 中,如下所示:

server {
    listen 443 ssl;
    server_name myhost.com;

    #SSL Config cut out  
    ...

    location / {
        proxy_pass https://api.igdb.com/v4/games;
        proxy_ssl_server_name on;
        proxy_set_header Client-ID "MY TWITCH APP CLIENT ID";
        proxy_set_header Authorization "Bearer THE_APP_ACCESS_TOKEN";
    }
}
Run Code Online (Sandbox Code Playgroud)

然而THE_APP_ACCESS_TOKEN是我手动请求的。出于测试目的,这没问题,但它会在大约 60 天后过期(根据 Twitch 开发文档)。我现在想知道如何动态请求访问令牌(并以某种方式存储它?),在它过期时刷新它并将其注入到 proxy.conf 中。

在研究过程中,我偶然发现了 HTTP Auth Request 模块与 NGINX JavaScript 模块的结合(https://www.nginx.com/blog/validating-oauth-2-0-access-tokens-nginx/)。

现在我想知道在代理请求之前通过身份验证请求模块触发令牌请求是否是一种合理的方法,使用 JavaScript 模块解析 …

api backend nginx nginx-reverse-proxy twitch-api

2
推荐指数
1
解决办法
5582
查看次数