Easy OAuth for No-coders with Martin Kravchenko | AATT #67

Resources

Transcript

Aron Korenblit: Hello, Martin. Welcome to "Automate All the Things". We're excited to have you

Martin Kravchenko: hello there and thank you for

Aron Korenblit: inviting me. Right? So we've got a lot of folks in the chat. Lisa, any Joseph, Rebecca, some, some new folks, some old timers, really excited to have you all. It feels like, oh, off is one of those, uh, topics that, uh, either gets people excited or scared.

Definitely scares me. But before we kind of jump into at Barton, we'd love a quick intro into yourself. Uh, and yeah. And who you are and what you do.


Intro from Martin Kravchenko
---

Martin Kravchenko: Sure. Fantastic Martin, uh, originally from Russia and now living actually in Barcelona, Spain, um, I started this agency a few months back called automation for lawyers, and that's how I go into all the no-code space.

And as the name suggests, we help low firms streamline their process, improve their marketing operations and client experience through automation and ultimately reclaim a lot of that lost time that this wasted in the repetitive and admin.

Aron Korenblit: Yeah.

um, yeah, little known fact. I, I speak Russian, uh, poorly, poorly, but, uh, I think you, I I've heard of, I've got a, I've got a Ukrainian accent that that's like my grandma, um, because that's how I learned Russian, but we're not here to talk about my grandma or Russian or, but we aren't here about oh, so, you know, um, you know, we came together cause you, you, you wanted to solve this and showed me a way to solve this.

Uh, so curious maybe before we begin, like how do you know what OAuth is? And then we'll jump into like, what is oh,

Martin Kravchenko: Yeah. So I, I was scared of all this as well. Uh, if, if you like amongst the bank, right. And, and then I decided to actually go into it and try making an all school and understand how it works.

Um, because I needed to develop, um, a custom integration for an application that actually didn't have, um, a built in native integration, ends up Euro Integromat, um, and didn't have API keys. So the only option was all. And so that's how I got into it. Uh, I investigated and ultimately it's, it's really not that complex.

Right. You just need to understand the process, but ultimately it works in a very similar way as, as normal API.

Aron Korenblit: Yeah. And so I think that's what I'm most excited to show folks or what you've shown me is that once you get through the hurdle of authentication, it actually acts just like API.


What is OAuth?
---

Aron Korenblit: So maybe before we dig in, like, what is OAuth?

I know it's a word that scares people. Like, what is.

Martin Kravchenko: Yeah. Also, essentially it's a protocol that allows applications to authenticate and perform actions on behalf of, of users. It is mostly used in actual applications, right. To build for, for a wide audience. Uh, those are, for example, the screens that, uh, when we are using an application that is connected, for example, to your Google account, right.

And you're presented the screen. Okay. Do we give this application access to the following permissions in your Google account? I need clean consent, right? Or I agree. Uh, and that is essentially is always float right now in this case, obviously, um, we will do a more simple scenario where we just authenticate on behalf of ourselves to, in order to perform a certain automation.

Aron Korenblit: Yeah. So, sorry. Okay. It feels a little warmer than I thought. So auth essentially says, you know, you authenticate on behalf of other people. So like, you know, Zapier will let you upload via Zapier videos to YouTube, even though they are not you. Right. You give them that access. And that'll talk about scopes in a minute and that's how we'll map there.

But, you know, in our limited use case, I think most, no coders or low coders just want to use an OAuth API as themselves. Right. So they just want to authenticate for themselves and then use that API as if they would use any other API. So really our goal here going to be limiting it to say, I just want to use this API as myself, not give that access to other people so that they can use, I can use the API on behalf of them.

It's really like let's get through the auth and then just use.

Martin Kravchenko: The access tokens. Yeah, exactly. And then you simply adjust as we would with normal API tokens. Right. Um, with maybe they had difficult, you sometimes have to refresh it in certain, in certain scenarios. But apart from that, it's, it's very similar.

Right. Okay.

Aron Korenblit: So, uh, let me know in the chat, I think this is one of those we're going to go slowly. We're going to try to go step by step, but let me know in the chat, if folks have like worries about OAuth that we can kind of talk about from a theoretical standpoint. Um, but our use case is going to be today is going to be, let's try to update YouTube titles by the API.


Use Case Overview
---

Aron Korenblit: So my, I want to authenticate on my YouTube channel, not to when you're watching on a test one. Right. And be able from Airtable. Uh, to update a YouTube title. And I really love this because it's kind of solving a huge pain point that I have, uh, and that Coleen kind of manages thankfully of like updating video information from air table, but it could be Vimeo.

It could be any other OAuth, you know, the flow should be the same. So Martin, are you ready to kind of jump in?

Martin Kravchenko: Yeah. And just important to mention the us essentially a protocol, right. And most of the APS that we will work with will follow a certain structure that will cover actually in this video with the Google API.

Um, but just keep in mind that there'll be maybe some little differences in how each service implements or so on, on their part. So you'll just have to go through the documentation of that particular, uh, API.

Aron Korenblit: Absolutely. Okay. So let's jump in. So we've got a lot of tabs open here. Um, so let's where should we even start?

Right. Like, yeah. What is the, the, the, the basics here, where do we start?

Martin Kravchenko: Yeah. So for this particular use case, uh, prerequisites were a great new Google account, right. And a YouTube channel and upload and access to video there, which we have already done before, before the street.

Aron Korenblit: Yeah. So let me just go show folks.

So our goal here is to use the YouTube API to update. I'm almost there there's video. So it's called testing title change. I'd like to, to update this


Step 1: Creating a webhook in Integromat
---

Martin Kravchenko: exactly. That's the case. Fantastic. Now the first step that we'll actually have to do is create a new web hook in Integromat and this will actually be helpful for the next step.

So it will perform, um, and this book will actually use to get any, um, any information from the Google, Google service, such as particular access codes that we'll need later on. So let's just go with the Integromat.

Aron Korenblit: Tell me, what is the whole flow? Maybe like maybe just theoretically, what is the whole flow and then we'll go step by step.

Martin Kravchenko: Yes. So the first, the service, the first step would be a great in a project in Google API console. Right. Uh, then we'll set up all the necessary consent screens. We'll add the deeds of data IPI to our project, and we'll also create a new office, 2.0 client. Right. Got it. Got it. And give us a client ID and a client secrets that we'll be able to authenticate our request.

Aron Korenblit: Got it. So if I'm understanding the flow rate, is that when I a user authenticates, right, as like myself, like give me access to YouTube. Yes. Right. The author is going to give a separate set of tokens, whereas like here's the author token for this particular user that you can use the first. Now we need to just set up the application and then we're going to have a separate flow for getting that.

Martin Kravchenko: Exactly exactly after that, we'll actually construct the URL, uh, that we'll present to a user in this case just ourselves. Right. Right. And that will actually actually, um, direct us to that screen of, do you consent this obligation to use a particular scope? Right? Talk about it in the minute, uh, when you click approve, right.

Uh, that will send a special code to our web code in Integromat got it. And with that code, we'll be able to make a request to the Google API to get our access and the refresh tokens, which we'll be able to actually use to update our YouTube title. Okay.

Aron Korenblit: So all very theoretical. So what we're saying right now, our first step is to set up a web hook, Ian Integromat and Integromat.

Exactly. Absolutely. Okay, cool. So I have Integromat, this is one of the few times I've opened up Integromat on the stream. So I know we have a lot of Integromat lovers. So this one's for you. Uh, it's a new scenario.

Yup. Uh, so we want to add a web hook here.

Oh, that's super slow search

Martin Kravchenko: call down. There we

Aron Korenblit: go. And custom web hook. There we go. Correct. That's Edwin. So I have tried, you're going to see in every single application I open, whether it's Google or Integromat or Zapier, there's going to be like five attempts at making the YouTube API work on auth. So that's why you have here, like already a web hook called YouTube integration because I've tried this before, but I failed every time.

So I'm excited about this. So we're going to call this YouTube. Yes. Okay,

Martin Kravchenko: great. Great. That was great. Just press okay. And actually let's save the scenario and activated, right. We have to save. Yeah, perfect.

Aron Korenblit: Uh, turn it on yet. Of course there's like three steps yet.

Martin Kravchenko: Great. And then just click, uh, click the bubble and get the URL or the actual good address to Cleburne.


Step 2: Setting up a Google Cloud Project and Access to YouTube API
---

Martin Kravchenko: Yep. Done. Okay. Fantastic. Okay. Let's that's Donna for when they took it on my part now. Okay. Let's now actually go to the Google API, Google cloud, API console, and set up our new

Aron Korenblit: project. Okay. And I, I imagine I need to be so Google cloud console. So this is my separate email account. Let's go ahead and create, but I need to, whoa.

Oh, there's a lot here.

Martin Kravchenko: Yes, actually the API is one. So, um, I can send you actually the link.

Aron Korenblit: Yep. So they go for it. There's a little chat that we have between us API services dashboard.

Martin Kravchenko: Was there.

Aron Korenblit: So can folks see that? Okay. Yeah, absolutely.

Martin Kravchenko: Exactly. Perfect. So now we create a new project.

Aron Korenblit: Okay. So YouTube auth

Martin Kravchenko: the organization at, well, you have a Google, like a Google business account so that you can create it out under your organization.

Aron Korenblit: Okay. Sorry, Connor. So can I do new organization or do I have to

Martin Kravchenko: know? Yeah, you can do the organization and location. Just click the browse and select organization,

Aron Korenblit: but I have none.

Martin Kravchenko: Oh. But, oh, because he can reach the actual a little bit. Um, okay.

Aron Korenblit: Let's just do it under. Yeah.

I might have to hide my screen every now and then to hide some, some tokens here. Okay. Now I'm creating YouTube. This is a new project. And you're saying, I need to add the YouTube access to the YouTube API in this

Martin Kravchenko: project. Exactly. Exactly. So we go to library

and here you can just search YouTube,

Aron Korenblit: ADA. I know it's data V3, cause I've tried this many times. Is that right? Yeah. Oh, yep. Boom enable.

Okay.

I need, I need waiting music. I need like some, like

Martin Kravchenko: some like lounge. Exactly, exactly. Um, okay, so then let's go back.

Aron Korenblit: Um, so there's a question from Amir. Do we have to use Google cloud for this portion? And I believe the answer is yes.

Martin Kravchenko: Yes, exactly. So as we are using, um, the Google office, right, for this particular project, we, we do need to use the Google cloud console in any way, because we had to create that app that will actually allow us to, to authenticate on behalf of ourselves in this

Aron Korenblit: case.

That makes sense. So we just, we need to authenticate once we need the project as if it was an app that is going to be using other people's YouTube API, just so we're able to authenticate once as

Martin Kravchenko: ourselves. Exactly. Exactly. And for each service that you will be actually building with, with all this integrated with ALS uh, you would need to follow the instructions for great in that developer app, right inside

Aron Korenblit: of the service.

Okay. So I can go back here, just go back to the dashboard.

Oh, now I'm back in the dashboard of my project, which is YouTube.

Martin Kravchenko: Yes. Uh, let's now create a new credentials

Aron Korenblit: essentials. So this is my API key of the project, not of the

Martin Kravchenko: user. Exactly, exactly. Um, let's also configure for that as a consent screen, as the coordinate suggests, and that is the actual screen that will be presented to a user when they will be able to choose whether I approve or deny.

Aron Korenblit: Okay. So name's going to be a E yup. You didn't have domain. Do I need this?

Martin Kravchenko: No, you don't actually need it.

Aron Korenblit: Self care. Net code meets no code. Uh, yes, we're very, I try to be very careful on the stream. I have, I have there's there's some API tokens, probably in some videos, but I cleaned them. All right. After the streets. Oh, we just re yeah. Let's just try that. Yeah,

Martin Kravchenko: we don't need it. Okay, cool. Okay. And then for the scope is essentially how scopes work is a gift, um, the application, a certain number of permissions to the user account.

Right? So, and this and this, you can find in the documentation. Right? So for one, for example, it could be mentioning YouTube account in other, for example, could be okay. Uh, uploading new videos, or for example, uploading your documents to Google docs. Right. All that kind of stuff.

Aron Korenblit: Okay. So at the project levels who were saying at the project level, what scopes do we want to provide?

Martin Kravchenko: Exactly. Exactly. And in this case, we just need one, uh, which is, um, uh, just exactly

Aron Korenblit: the first one, the first one. So we

Martin Kravchenko: allow us yes. Manage your YouTube account. Okay.

Aron Korenblit: Got it. Got it. To update that. So we're saying within this project, your users, we, we, as the project will be able to manage. The users manage a YouTube account in this case, it's just going to be our account

Martin Kravchenko: executive

Aron Korenblit: that's correct.

Yep. Okay. Anything else we need to configure here?

Martin Kravchenko: No, just save and continue. Great. Perfect. Okay. Let's give some summary. Fantastic. Now actually go back, go back to bed dashboard and the credentials screen.

Aron Korenblit: Jen shows. Yeah. Awesome.

Martin Kravchenko: And here will great end you all's a 2.0 client ID, right? So great credentials,

Aron Korenblit: client ID

Martin Kravchenko: type in this, in this case, we'll actually choose, um, yes.

Web publication. So I'm going to name it as you want.

Aron Korenblit: I'm very bad at naming things. I feel like that's really bad, uh, redirect URLs.

Martin Kravchenko: Exactly. And here, it's important to add that, uh, your, uh, that we have actually generated with Integromat right with the backbone. Um, and, uh,

Aron Korenblit: Okay, so this is, oops. Bring up my clipboard.

So essentially, can you, can you explain what this redirect URLs, because it is confusing, I think for a lot of frustration.

Martin Kravchenko: So this is essentially when, when we, uh, press consent, right? Uh, the app will send us a special talking to this URL, right. And before we actually able to do that, we need to add it as one of the authorized redirect euros on the project level.

Aron Korenblit: Got it. So let me just say this back to you. You're saying that once the person says, allow, it's going to send a token to some URL and we need to capture that URL. So what we did here is we created that web hook first, right. Such that it can capture that token, that we're then going to use in the API.

Martin Kravchenko: Um, yeah.

Well, the code and then we'll exchange with. Uh, with the Google cloud API we'll we'll exchange that coat that we get for actual access and refresh. Got it.

Aron Korenblit: Okay, cool. So let's create, oh, I forgot to add. I need to add no, that was good. I think it was fine.

Martin Kravchenko: No, I think, I think I was just going to double check that.

Aron Korenblit: Yeah. Okay, cool. Let's save that. Okay. Okay. So now we have the project credential and the you redirect.

Martin Kravchenko: Yes. The important things here. If you click into, into the client ID right

Aron Korenblit: here, right here, or right here. Well, actually click into it. You click into it. You

Martin Kravchenko: can do, uh, there are two important parts of information that we'll find here.

Um, the client ID and the client secret that you see on, on the right. Exactly. We'll be using those to, uh, to build the.

Aron Korenblit: Got it. So can you just quickly, I wanna, I'm trying to go as, as, as detailed, not as detailed, but I was like, so folks can map this information to other APIs. What is difference between client ID and client secret in this

Martin Kravchenko: situation?

Yes, so-so client ID is just essentially identifies your, your app on the Google platform, right? And this particular client or client and the client secret is actually a secret key that we'll be using to, uh, in conjunction with the code, did receive from the user consenting to use, um, to use this application in their account, uh, to actually generate the access and refresh tokens.

Aron Korenblit: Okay. Got it. So this is like authenticating, this is kind of like a normal API key in the sense that it's authenticating this project to be able.

Martin Kravchenko: So while in the steps. Yes, exactly. Okay,

Aron Korenblit: cool. Okay. So I got those two. I'm going to copy paste this one and do I need I'll copy paste both. So I

Martin Kravchenko: have both. Okay.


Step 3: Approving the Application
---

Aron Korenblit: Next step here. Okay.

Martin Kravchenko: Where did we go from here? Yes. Um, do we have the, um, the, um, docs page that I have sent? Yeah.

Aron Korenblit: Do I have it right? Uh, here. So this is

Martin Kravchenko: okay. That's that's, that's actually, that's actually the end point that we'll be using to update a YouTube video. Okay. There is another one that I'll send you in the chat, which essentially walk, walks through all the steps needed in order to

Aron Korenblit: got it.

Okay. So this is actually, how do we do go up? Go up. Okay, cool. That's because it'd be a lot. So let's spend five minutes reading this. No, I'm kidding. I'm sure your walk through.

Martin Kravchenko: Okay. Yeah. Maybe just to take the TRL and bring it into the browser so that we don't

Aron Korenblit: have to switch. Oh, here we go.

Martin Kravchenko: Okay, fantastic. Um, if we go now to go up to.

Aron Korenblit: Prerequisite. There we go. Awesome. Exactly.

Martin Kravchenko: We have already enabled the API, right. In this case, the UDaB data API, we have also created the engine, also the authorization credentials, um, just now, right. So then we can go to the first step, which is

Aron Korenblit: actually, um, we've done this, uh, we've done language yet.

So we're doing here obtaining OAuth 2.0.

Martin Kravchenko: And the first step is actually building the URL that will be given to the user. In this case, it just helps out well that's consent screen. Right. Got it. And for that, we have to set certain also relation parameters. We can't find relevant. Okay. So what you can do is you can take that and point, uh, click, click first HCP or arrest, and then he can, uh, take that, uh, that link and paste it in, in postman

Aron Korenblit: postman.

Okay. So, uh, let's sorry, we're going to have to kind of like go between two browsers. And that's my fault, but let me know if it gets confusing. So this is just the one that, where I'm authenticated. So let's create a new request here. So we're just, we're just trying to authenticate the first time so we can get one token for ourselves.

Martin Kravchenko: Right. Um, as essentially what we are doing right now is we'll just build as a URL. We could do it without postman, but in postman will be just easier to add all the necessary parameters. Got it. And then we'll copy that link and actually go with it in our Bravo Bravo in order to approve the application.

Aron Korenblit: Okay. Got it. So we're just approving the application here. Totally understand. So that it's a get call, right. So we're going to do it in our browser, so we don't need to change that.

Martin Kravchenko: Exactly. And then, and then we need certain parameters in there.

Aron Korenblit: Oh, okay. Okay. So we're just going to like, fill this out. We already have all of this information, so, okay, cool.

So I can do the ones, client ID. Yeah.

Martin Kravchenko: And, uh, answering the question and Jack yes, absolutely. You can do it using curl or you can also do it to get an Integromat or anything else that is able to.

Aron Korenblit: Yeah. So we can actually just build this in, in the browser if we were like,

Martin Kravchenko: exactly. Exactly. But obviously they in golden like you or somebody or else we'll

Aron Korenblit: be yeah.

That's a pain. Yeah. So, okay, cool. So redirect URL. Boom. We have that. I have that here.

Martin Kravchenko: Well, that's, that's our, yeah, exactly. That's our web poking Integromat

Aron Korenblit: response

Martin Kravchenko: type. The response type S S is documentation. It needs to be set to go. Um, yeah.

Aron Korenblit: Code scope.

Martin Kravchenko: Okay. The scope is actually the scope that, that we will actually, this application will actually need.

Right. And in this case, it's just one again. Uh, the OSU. And if you are, if you are defining a special scope here, it will obviously have to match with the ones you already defined on a project level. Right. If it doesn't, then the request will be, it has

Aron Korenblit: to be a subset of right. So got it. Okay. Access type,

Martin Kravchenko: um, then access type should be set to offline and essentially means that our application can run without, uh, without any user interaction.

Right? So it didn't get wrong in the background, the state and everything else is actually optional. And we don't need it for this particular use case, because this is mostly used in actual applications that manage multiple, multiple

Aron Korenblit: users. Got it. Okay. So this builds this URL

Martin Kravchenko: right here. Exactly. Which when Justin copy and then in the other, in the other browser, we can raise it and go to it.

Okay. And

Aron Korenblit: this is going to go actually to a prompt. Exactly.

Oh, our client was not found. This is probably on me. This is probably because I put in the wrong client.

Martin Kravchenko: Yeah, exactly. Exactly. You actually put the secret key. Okay. And it's important to mention that the secret key, um, over the client or client, uh, is never to be shared. So it's innovation that is just you as busy a server, right.

Uh, you actually use that client ID, which is public, uh, in order

to

Aron Korenblit: actually redirect the user. Right. Okay. So this right here. Okay. That makes means that makes sense. My bad, my bad, good thing. This is not a, a real thing. Okay. Uh, let's pays this. Let's go back. Okay. Yeah. So I'm saying, okay,

Martin Kravchenko: now you signed into this

Aron Korenblit: account thing.

This is what I want to authenticate with. I want to, and we

Martin Kravchenko: want the manage your user back on, right? Yes. Hello. So press allow. Fantastic. I accepted. So it actually redirected to the web hook. We can close now with that and go to Integromat and see what's.

Aron Korenblit: Okay. So let me see, I see a woman go back

Martin Kravchenko: and go back.

Aron Korenblit: I'll go back. Okay.

Martin Kravchenko: Yeah. And if you refresh the list of prawns. Cool.

Aron Korenblit: Okay, look, get the details. Yes, man. I'm excited. This is

Martin Kravchenko: working and here you can see the actual code, right? So that's the code that I was talking about. We will now copy and we'll actually, um, just do another request now actually sending it in postman, uh, to get the ax and the refresh tokens.

Okay. Okay.

Aron Korenblit: So this is the code that then allows us to get the next accident. Okay. And those are what allow us to run the API APIs. Exactly. That's correct. Okay. So it's like a two-step process. So let's save this. So folks will be able to reuse this and I'll share this in the, in the description, right? Um, let's go ahead.

Yeah, no, I'll I'll uh, so we need a new one right here. So new ad request, this is going to be, get access tokens, and then I've, I've kept the code, right. This right here.

Martin Kravchenko: I actually will not be put in there yet. Let's go back to the documentation part. Yeah. And let's go to step five now,

Aron Korenblit: five,

Martin Kravchenko: we just exchanged acetylation code for fresh and access tokens, and we'll be sending the request to that link,

Aron Korenblit: uh, HTTP, OAuth.

Okay. So we're kind of doing the same thing, but just to a different URL with what we just

Martin Kravchenko: got. Exactly. But in this case, we will not be using the barometers. We will be using actual body of the request. Uh, forum for a yearling coder,

Aron Korenblit: right? Okay. So we need to, this is a post call, this

Martin Kravchenko: boss call to then they click into buddy a ukulele form URL encoded.

And here you do the same thing as

Aron Korenblit: a client, this

Martin Kravchenko: case. Exactly. In this case, we have, uh, both the client ID and the Glen secret, because this is actually all, let's say private information with trance, which should run from our servers. So it is not exposed to the

Aron Korenblit: public. Got it. And so this is just to get that one.

Oh, so we're set. Otherwise we're getting an access token for Aaron's YouTube account using a project from our service. Correct. But this is only because we're only using it for us. We only have to do this once. Once I get my one token pending any refreshes, I can then run the API, just like I would. Any other API that's

Martin Kravchenko: correct.

And some, and some might be will actually, how they access to their first tickets work as some API is actually making that the access token is only. For a certain, uh, certain time, usually about an hour after that you have to use the director refresh token that you'll get from the three requests as well in order to update your access talking okay.

On a periodic basis. Um, this is all this done to in grid security. Um, and some APIs will actually not have any UX is talking, will be active, uh, indefinitely.

Aron Korenblit: Yeah. Okay. So while you were saying that, which we're getting into the refresh a little later, this should be good for an hour, so it'll, it'll cover the stream, but we can, if we have time at the end, we'll cover it.

I'm putting in my client ID, my client secret my little code that I just received from the last call when I authenticated. Right. And then grant type type

Martin Kravchenko: I'll sort of station code that's standard. Um, socially part of the protocol. Yeah.

Aron Korenblit: Okay. Ending by numbers here. Redirect URL.

Martin Kravchenko: And this will be just the same, the same girl that we used in the local.

Aron Korenblit: Okay, cool. So hook, hook, hook. Okay. Let's just double check this because I want to make sure. So the client id.apps.google, that end user, that one client secret. Let me just make sure I have the right one here. Find secret this right here. Yeah, that looks about right. The code we just received from the last call.

This is standard. That's the redirect. You are going to send a post call and then we could send this and it's going to give us an access token in that same web hook that we had a moment ago.

Martin Kravchenko: Actually it will give us a response back in postman.

Aron Korenblit: Oh, okay. Cool. Okay, cool. Cool. So let's go ahead and send this.

There we

Martin Kravchenko: go. Okay. As you can see, bigger, uh, Access to ethicacy. We have the access token we have expires in, which is actually in seconds. Okay. So that's about a bit less than an hour. And then we have the reference token, which we'll be able to use later to operate our et cetera.

Aron Korenblit: Okay. And so now that we have the access token, we can actually run the API with this access token, and it'll understand that we're updating my YouTube channel.

So now, like for the next hour, we're kind of good to go. So for folks who are like, how do you get this to work? That is, those are the steps you first need to authenticate your project. Then you need to authenticate for a specific user it'll return to different things and access token and a refresh token.

And we're going to focus on the access token to be able to run the API as we would. And then if we have time at the end, we'll show you how to get this new access token every hour or even every 15 minutes or something like that. So

Martin Kravchenko: exactly. And this is precisely we can use this X stock and as you would, any APS.

Um, with normal, normally API key.

Aron Korenblit: Okay. So now we want to go ahead and run

Martin Kravchenko: with now. Now let's actually, okay.


Step 4: Updating YouTube Title via Postman
---

Martin Kravchenko: Are we building this in postman or do we want to make an Integromat scenario connected to our table?

Aron Korenblit: Um, what do people want? Like do people, I guess I'll ask, what do, what do people want? Do we want to run it once in postman or do we want to, well, I

Martin Kravchenko: think I would say be a little bit more extensive and actually like will also understand how to do requests in, in, in,

Aron Korenblit: yeah.

Cause both, we still have to write a request. Right. We still need to write that request, whether it's in postman or an Integromat and if we do it, Integromat, we're able to kind of extend and create functions. So what I would recommend, here's what I would recommend. Let's start by writing the API call in.

And then building out the flow to update it automatically. How does that, how does

Martin Kravchenko: that sound? Okay, fantastic. Fantastic. Okay. Then let's go to, uh, the previous decondition page, right? Or the one with we'll actually be using to update. Um, we have it on the right

Aron Korenblit: here. One second. Okay. Here, here we

Martin Kravchenko: go. Okay.

Exactly. So we'll be using this particular endpoint, which you're gonna find it in the YouTube data, API documentation, um, to update, update the video. Okay. So in here we have certain things. We have obviously the HTP requests, right. We have the URL and we have the massive, which will be put in this case.

Aron Korenblit: Yeah. Let's actually, do we want it? So we're building an Integromat. I have Integromat open it up

Martin Kravchenko: in Boston, none of first possible, and that will translate into anything.

Aron Korenblit: Okay. Okay. Yeah. Cool. Okay. We can do that. Yep. So, uh, add request. So update title, we're saying, oops, that's the wrong one. So let's copy paste some stuff here.

Oops, what? I hope it works there.

Uh, okay. Parameters.

Martin Kravchenko: Yeah, exactly. Okay. So, uh, important to mention here, um, we need to add the authorization, uh, and this will actually go, uh, let me check. Well, if you click read about obligation authorization tab, well, then we'll just see, how do we actually use that exit talking that we just go okay.

Right.

Aron Korenblit: Um,

Martin Kravchenko: so, uh, server side sort of size of flow that we are using.

Aron Korenblit: Okay. We've done all. So this is where we were a moment ago. Set authorization. No, no, no.

Martin Kravchenko: Actually they go down to after step five. Uh, it should, it should actually explain how we use Colin, Colin, Google, API.

Aron Korenblit: Oh, okay, cool. Okay.

Martin Kravchenko: Exactly. Yeah.

And if it needs to be arrest, what it will be actually doing in this case is that. Uh, and this will be a header. Okay.

Aron Korenblit: Got it. As a bearer token,

Martin Kravchenko: I guess that that's a bearer tokens. So I'll start Istation is the, is the name of the, of the header

and then we'll be bearer and then space and the access token that we just got from Morocco.

Aron Korenblit: Cool. Yeah. So this just making sure we have the right one, actually this one right here, we're putting it as a header to be able. Okay, cool.

Martin Kravchenko: Got it. Fantastic. Okay. Let's go back.

Aron Korenblit: Says, okay. Authorization. We've done this.

And then we can put in the perimeter

Martin Kravchenko: and the barometers. Okay. And this will actually within, in Jason format.

Aron Korenblit: Yeah. Okay. So it's, so we're going to go into here. Save this, make a body. Ah, Jason. Well, okay. And what parts we just want to update the title. I know that two part.

Martin Kravchenko: Yes. So part should be stat two or to snip it.

Right. Um, which will actually allow us to update the title, uh, in this particular case as well. Like all that you will actually read in the recommendation in this case, we just begin. So we're doing this and this part will actually go, uh, in the, in the query string. So in the

Aron Korenblit: parameters. Oh, it's, uh, it's a parameter.

Martin Kravchenko: Yes. From what I understand, yes. Okay, cool.

Aron Korenblit: So part,

Martin Kravchenko: so part will be snippet snippet, right? Okay. Then

Aron Korenblit: in the body and the body, we're saying, well, we actually update

Martin Kravchenko: exactly in the body. Well, we'll do an ID.

Aron Korenblit: Uh, yeah. Okay. ID, you must specify these property. Okay. So ID ID is the ID of the video. We want to

Martin Kravchenko: exactly.

That's the idea of those basic videos that won't go

Aron Korenblit: here, right?

Martin Kravchenko: And maybe just click into it and what you're going to get.

Aron Korenblit: Yeah, right here. It's this last kind of unique identifier

Martin Kravchenko: it as well. So as be can see us, we updated.

Aron Korenblit: Yeah. I'll pause it just so yeah.

Oops. It's playing in my ears ID. This is going to be a string, correct? Comma. And then let me pull

Martin Kravchenko: you modified I think 30.

Aron Korenblit: No, I think we're good. We're good. We're good. We're good.

Martin Kravchenko: Okay, cool. Uh, and then we'll have the snippet, uh, object, right? And then under it, we'll have the title and the writing.

Aron Korenblit: Okay. Got it.

So we're saying snippet, it'd be another, it's going to be title and this is the new title that we want to update.

Okay. Boom.

Martin Kravchenko: And then second, second sub

Aron Korenblit: objects. Oh, wait, you must specify a category ID. Okay. And this is, this is very particular about YouTube. YouTube wants category IDs. They really care about category DS, but no one actually cares about them. So

Martin Kravchenko: I, you actually have to find, uh, which, which one it is, um, important ID is a D the D is lowercase.

And there is a way that you missed.

Aron Korenblit: Yeah, thank God. You're here. Ah, okay. Category 24. So these are the, these are the two required you must specify. Exactly. Okay. So even if you're not updating the title, you need to always pass in a title and it'll update or keep if it's the same title as you had before.

Martin Kravchenko: Exactly. Exactly. And then it can obviously set all the stuff like tax description, default language, whatever.

Aron Korenblit: Right. And then description. I'm sure as he description, so Coleen, we're going to be able to do it soon enough, soon enough. We're going to be with. Um, okay. So if I run this, is there anything like we should update the title with this?

Uh, yes. Okay. Let's hope let's hope. Rebecca beliefs, Rebecca beliefs, and I think it's important. Okay. So let's go ahead and send that. Okay.

Martin Kravchenko: It's actually, that's great because we actually received the data all over the whole video object, which means that the, uh, the token was successfully, um, authorized. So let's go back to you to Ben will, should see the new dialogue.

Aron Korenblit: Nice, nice. I think that deserves some confetti. Let's do it

right. That's amazing. I actually, I think just that. So now I'm just kind of just thinking about here, right? So now. You know, I would theoretically be able to run this API call from Airtable. Right.

Martin Kravchenko: But exactly, you're good, but that's obviously you have to write out the whole code. Right,

Aron Korenblit: right. Which has no, no, I, I w w whatever, I think ultimately, like we were just able to do it programmatically, and I think the, the kind of hack here that we're doing is that we're only authorizing it once for our user.

So for developers watching this, this is not like you can now go and build YouTube applications to really just for, like, for me, like,

Martin Kravchenko: well, you can, you can, the only thing is that you will be using a more extensive, more workflows in Integromat, for example, right. And you could connect those web hooks and store all the data that you need in the data store, for example, Integromat and then manage all that ossification on the backend that is to work with Integromat, there's just a bit more complicated and more time consuming than just doing it for one.


Step 5: Updating YouTube Title via Airtable & Integromat
---

Aron Korenblit: Okay. So let's, let's, let's extend this. So let's imagine that now. I have my video information and air table, and I want to kind of update the title here and then maybe check box or click a button. And that runs that update with this as a dynamic parameter in Integromat. Is that where you're just thinking of going let's

Martin Kravchenko: maybe do a modified date so that whenever you change the title yet, so it will activate the workflow, right?

Aron Korenblit: Sure. Yeah. Okay. Sure. Yeah, that's

Martin Kravchenko: fine. Yeah, because when we click the button, we'll need to actually do some custom code to write custom web book. Right. Which is global, but let's just not get into, into that in this. We'll do

Aron Korenblit: it with a view with a checkbox interview. How about that?

Martin Kravchenko: Um, okay. Yeah. I mean, I'm not a super expert in, in Airtable as long as we can connect into it.

Integromat

Aron Korenblit: yeah, it should be fine. Yeah. Okay. So, uh, let's go into Integromat. So I think we're good to go here. Um, luckily I, you, I am an expert in heritage, not an Integromat. I like to believe I'm an expert in. Um, where is Integromat? Okay. Here it is. Okay. So now we'd actually don't need this scenario. We need a new scenario.

Martin Kravchenko: Yes, exactly. To just build a new scenario,

Aron Korenblit: um, then we want to do okay. So we do, we want the air table to be the trigger. Right,

Martin Kravchenko: right. And that's it. That's why I was saying that when the record is updated, that's one of the, um, one of the, let's say triggers, right. You can use

Aron Korenblit: to record. Yeah. I haven't used this in a while, so let's do that. Sure.

That's our trigger.

Martin Kravchenko: Well, actually you would have to put it in there. Yeah.

Aron Korenblit: We'll get there. I'll get there. My Integromat annoyances will, will alleviate, uh, yeah, this should be good. The base is a T T. Uh, I have a lot of bases, so I need to find it. Um, let me just find it here. Wish I could, could I put, could I make it as dynamic and just give you a base ID? It doesn't seem that way, but I think a T T number 67

oh, off boom, Hey Table.

Martin Kravchenko: Okay. Before we do that, we'll actually need to do the create time or modified time fields, uh, because essentially the connection with the air table at this moment, it's actually not post, so it's not out. I magically sent out whenever you update a record, we'll actually go in and schedule it to it up, for example, for every five minutes.

And it will do a custom call from within Integromat to check if there were any updates. So we need that one to five times.

Aron Korenblit: Yeah, Lisa, I, I, I spent a lot of time in air table. It is, uh, it is quite something I dogfooding to the next level. So, so, yeah. Um, okay, so now I've set that up. So it's going to check on that.

Okay. Let's move this a little closer. Cool trigger field. Oh, I got to refresh it. It's

Martin Kravchenko: the refresh and the day, I just need to have a button over there on the right, which is like a circle. Yeah.

Aron Korenblit: Good view.

Martin Kravchenko: Refresh that they both might as well just to refresh the tape.

Aron Korenblit: Okay. You have a table, one trigger field modified time incorrectly written.

Okay. Let's that's it? I think, I don't think we need to label feelings.

Martin Kravchenko: Oh, okay.

Aron Korenblit: Okay. Uh,

Martin Kravchenko: Okay. Okay. Exactly. And this was example would run every, every five minutes, right? I think the default is okay. Um, what we can do is we can actually do a task one, so let's just run it once a, well, before, before we run around once what we'll get the course recommending how

Aron Korenblit: yeah.

I, it need to change

Martin Kravchenko: changes, change, go change it.

Aron Korenblit: Eh, it's run it again.

Okay. I got it.

Martin Kravchenko: I got it right here. We have the name. We have the name, right? And you title

Aron Korenblit: number two. Yeah, right here. Okay. Now we want to go ahead and run that API call.

Martin Kravchenko: Exactly. And the, for this one, we use a custom HTTP module

Aron Korenblit: as, is it API

Martin Kravchenko: or no, just HTTP.

Aron Korenblit: Yeah. There. So make request. Boom. Okay.

Martin Kravchenko: And here we're here. We'll define all that. All the executives in parameters, we defined investment. So

Aron Korenblit: URL, this one doesn't change

Martin Kravchenko: method as of yet, instead of, well, yes. So you could either pull the string directly there, right. Or you can actually put it in the query string, uh, as,

Aron Korenblit: uh, okay.

Yeah. I see what you mean. I see what you mean, so, okay. We're going to reconstruct the API call. Yes.

Martin Kravchenko: That's the header with authorization

Aron Korenblit: copied station.

Boom. This one is, yeah. It's so now it's not dynamic. It's always this one, but in 45 minutes where we string is a snippet

Martin Kravchenko: and then body rule.

Aron Korenblit: Uh, well, yeah, rod, I guess I just have to, yeah, Jason, there

we

Martin Kravchenko: go, Jason, and then just go be the

Aron Korenblit: request Korenblit yeah. And then we want here to change one.

Martin Kravchenko: No, that's the response.

That's the response actually that they got from the server.

Aron Korenblit: Oh, sorry. Say your body. Yeah, there we go. Sorry. I'm trying to try to get ahead of here so we can, uh, boom. And then here.

Martin Kravchenko: Yes. Right. The name right from,

Aron Korenblit: and I

Martin Kravchenko: removed the civility. Yes. And actually you could update as well as ID because you, you did it dynamically narrative as well.

Aron Korenblit: Oh, right. You're totally right. Yeah. So D

but just for folks so that they, now we're saying, okay, what are the record? Get the ID, get the right title, and then run this call. I imagine I do want to parse the

Martin Kravchenko: response. Um, and it doesn't well, yeah, you could, you could, but we won't actually be using it so we don't

Aron Korenblit: use it. Okay. That's good. Yes. So save this.

I I'm just going to save, cause I know you got to always be saving.

Martin Kravchenko: Um,

Aron Korenblit: do we just want to run this, you know, pick up the one for no,

Martin Kravchenko: no, actually not. So let's, uh, change it again in, in our table.

Aron Korenblit: New title three run. So that's run once. Exactly.

Martin Kravchenko: Okay.

Aron Korenblit: Whoa. This is wild. This is wild folks. I don't know. This is wild for new title, right? This is a confetti. I don't know. I've been working on this for like two years.

Um, that's wild. That's that's just wild. I really, Martin. No, you've you've impressed me. I've I wish I could. I've been trying to automate YouTube from air table for, I dunno, Colleen, you tell me how long I've been trying to do this. So this is super exciting. Now we have nine minutes. Brian, can we in nine minutes show how to refresh the token?

Yes.

Martin Kravchenko: Such

Aron Korenblit: challenges. Um,


Step 6: Storing and Updating Refresh Tokens in Integromat
---

Aron Korenblit: so our challenge in context here, our challenge right now is that we've, hard-coded the bearer token, right. And it's good for one hour. So how do we refresh it?

Martin Kravchenko: So first, what we'll do the actual creating your data store in Integromat where we'll store the exit token to the refresh token.

Aron Korenblit: So here at data store, that's correct. Call it tokens tokens. So,

Martin Kravchenko: um, they structured will adding you data structure.

Aron Korenblit: So this is going to be token soaking through.

Martin Kravchenko: Um, specifications. So the name will be, let's say ID will be one, right. In this case just to make, to make sure that we somehow identify all of them.

Right. Okay. So let's just say ID, um, default,

Aron Korenblit: but there's no default, right? Do I need a default? Yeah,

Martin Kravchenko: no, no, no. Default. Okay. Just add a then we'll add another item

Aron Korenblit: and then no, no, no, no, no. And the token structure, so it, can I edit? Okay. Add item here. Okay. Got it. So this is going to be, then we hear

Martin Kravchenko: the access token.

Yeah.

Aron Korenblit: Okay. Same thing add. Okay.

Martin Kravchenko: And then the refresh.

Aron Korenblit: Oh, and then I need a third one. Okay. Got it. Got it. Okay. This is the one I have. So the, the,

Martin Kravchenko: I know I, I D I D will be just an identification of the record in the database. The access will be the access token, and then the refresh will be the report. Oh, okay.

Aron Korenblit: Okay. Got it. Yeah. Okay, cool. So then we have three record ID. Okay. Got it. The access token, and then the refresh token. And these two, I get from the API called to Google. Okay. I'm going to try to save, save.

Martin Kravchenko: Uh, and now we can, if you click browse, if you click the browse, you'll actually be able to see a structure, um, which will be ID account or I'd have the key actually, I guess.

Uh, okay. Um, let's actually manually add it. Uh, now, uh, you could do this programmatically, if you actually defined like proper, let's say client, right. And you, you, that's how you would be able to actually have to take in multiple users. Right. But in this case, uh, let's just say.

Aron Korenblit: So do we, so Q1, sorry. Yeah.

Okay. No,

Martin Kravchenko: no, no, just, yeah. Okay. So you're one, and

Aron Korenblit: this is the record ID. This ID is the record ID.

Martin Kravchenko: Well, it doesn't really matter. Like we didn't actually need it, so.

Aron Korenblit: Okay. Well let's just put it in the record ID because you're right. We get it from step one. Right? So this is bam access is, uh, the, uh, from here from step two.

This is the one right here. The one we just ran with and in refresh token, sorry, just this one. Right? Boom. Okay. So this is that example for what we just.

Okay, this is the one we just ran for instance,

Martin Kravchenko: right? Yes, exactly. Okay, fantastic. Uh, that is already in the database. So let's now create a new scenario. Well, actually let's first modify the scenario that we already have to get the developed dynamically from

Aron Korenblit: the data store. Okay. So we're going to rerun the air table.

What exactly? Oh, this is the wrong one, one second. I didn't turn it on. That's. Why should be there not save it? Uh, air table. So what is it? New scenario

Martin Kravchenko: integration.

Aron Korenblit: No, but where do you see? Oh, here we go. Okay. Yeah. Edit and

Martin Kravchenko: yes, in between we'll add, uh, at get data store action. Okay. And yes, you can do that data store

and we'll get the record. Yes.

Aron Korenblit: The stores can be

Martin Kravchenko: tokens. And the key will actually, for example, can you use the ID of the records in the air table? Um, if you want to do that, I know no accent. No, sorry. There's like you, I should just be one.

Aron Korenblit: Yeah. Yeah. Wait, cause we're always going to replace

Martin Kravchenko: it. Yes. Well, we have set up the data store, but the battling this case, uh, we could just use the key parameter as let's say the, our record ID in our table and not need the extra ID ID field.

Right. But let's keep that mess up on

Aron Korenblit: Chrome for myself. Okay. That's okay. So we're just going to always get the key, the first key, right. Which is going to

return

Martin Kravchenko: it. Yeah. And he put it equal to get it dynamically. Right. But in this case,

Aron Korenblit: wait, wait, wait, I just want to run or stop. Did I just break? Oh wait, wait, wait.

So how do we test this as an example for that? You can

Martin Kravchenko: run it are, you can run it. So

Aron Korenblit: just run this module.

Martin Kravchenko: Yeah.

Aron Korenblit: Did we need to, oh, okay. Here we go. Okay. So it returns the access token and then the refresher.

Martin Kravchenko: Exactly. Um, and then let's, uh, modify our authorization header in HTP request with the exit token that we get from the data store. Oh,

Aron Korenblit: right. Okay. Right here. So we're saying here this just the second part, not the, exactly from a regular access.

Yeah. Delete this. Okay. Save that. That's it. That's the only thing that changes

Martin Kravchenko: then the only thing that changes so that now it's actually getting it from the data

Aron Korenblit: store. Right. Okay. So this, this will, this will, this kind of Bulletproof right. In the sense of if I run it again. So if I save let's, um, thrown once you title four.

Okay. So that's your work?

Martin Kravchenko: Well, we actually should it because it's.

Aron Korenblit: Okay. And then this worked and it said new title number four. So now we just need to get the refresh token to update that record

Martin Kravchenko: the data store. Exactly. And then for that, we'll create a new scenario which can run, for example, every, let's say 55 minutes.

Aron Korenblit: I mean, we can turn it on now. Right. So let's go ahead and turn it on for

Martin Kravchenko: sure.

Th the only problem is, has that window five minutes. So we'll probably have to you're stranded once again.

Aron Korenblit: Okay. Okay. So let's go and create a new scenario.

And,

Martin Kravchenko: um, here we'll just get the record from the datastore

Aron Korenblit: record, uh,

Martin Kravchenko: store.

Aron Korenblit: Oh. And I could turn it on a schedule. So, uh, we want get, get a record. What are their tokens? Get the refresh, the one, one key one,

Martin Kravchenko: right as well. It could be dynamic in this case, all of them, but in this case, just one way and

Aron Korenblit: give it a second. Let's just make sure we get it. Boom or refresh.

Martin Kravchenko: Yes. If you click on the clock, right.

You'll be able to define, okay. Got it. Thank you. Corner. You'll define how fast it is. How often,

Aron Korenblit: so now we just need to figure out how do we get that? Is it the same call we did before?

Martin Kravchenko: No, no, actually, let's go back to the recommendation as the last, last section that we have in the docs. Uh,

Aron Korenblit: so here

using,

Martin Kravchenko: rather

Aron Korenblit: than just refreshing and access to

Martin Kravchenko: offline access right now.

So the, the, the URL will be that.

Aron Korenblit: Okay. I can. So this is going to be HTTP,

make a request. Let's ask these two URL. It is, seems to be.

Martin Kravchenko: Exactly. And then in the fields. Um, so that'll be your encoding. Okay. Uh, that'll be your own coded. Okay.

Aron Korenblit: Okay. So let's do it one at a time. So headers we've

Martin Kravchenko: got only for headers. We don't need any header. No headers, no queries drink. Oh, it's just a body, but no, actually there'll be for Nicola.

And here we'll put all the nursery fields, client ID

Aron Korenblit: D this comes from right here. No, it is the

Martin Kravchenko: no, that's the client ID that we have with the open the app.

Aron Korenblit: Okay. That one, the static, that one is the I'm learning here. Folks I'm learning. So this is the, the one that we want to make public. So I think it's more, not this one, this one, this one, yet.

This is our app client ID. So adding that exactly. And they find secret. I also have that. That's the one that we shouldn't share. This one right here. Yeah. Also static and grant type refresh Shulkin.

Martin Kravchenko: Yes.

Aron Korenblit: But we are so close folks. We were so close and then the refresh

Martin Kravchenko: refresh token will be the ones we get from the

Aron Korenblit: okay. And that is run right here.

Martin Kravchenko: Okay. Um, and now let's see what X is talking we had in the beginning. So maybe just look at the bubble, uh, the one ride that we're on. So let's just make note of

Aron Korenblit: it.

Martin Kravchenko: Uh, yeah. Y well, actually the last part, I think will be the one that changes.

Aron Korenblit: Oh, okay. Let me just check. So, uh, w N Z K Y exactly.

Let's run this.

Martin Kravchenko: Well, let's just run the whole thing. Exactly. Okay. Fantastic. And if we look up, uh, the output, well, actually we didn't start anything yet, but right.

Aron Korenblit: Okay. And then we want to update the data store with this infection. Exactly. Dude, this is so cool. Update a record. Okay. And the key is going to be one.

And then the ID is the same idea as before, just because we've poorly structured access is going to change,

Martin Kravchenko: then you want it, right. So that's a data. Oh, actually any parsers points in this case. Oh, I,

Aron Korenblit: I do need to, okay. Let's do that first response. Hey, let's let's run again.

Martin Kravchenko: Just unlink and legs. The last one.

So it doesn't right.

Aron Korenblit: We're so close.

Martin Kravchenko: And this evening, I think you can do this as often as you want. Really. The only problem is that there's those X tokens to, let's say you generate will be, um, the lift for the one hour. All of them.

Aron Korenblit: Okay. Even, even if, even if it's okay. Even if I have

Martin Kravchenko: even as a refresh, it doesn't expire the last one.

Aron Korenblit: Okay. So I have data access token.

Okay, great. Okay. So let's link these two now do, uh, well LinkedIn, correct.

Hey tokens. One ID is going to be the same ideas before

Martin Kravchenko: and then a fresh, never changes actually refresh that with changes. So that's the one that you had been in

Aron Korenblit: the refresh doesn't change either for that user. Okay. Exactly. Well, so this means to

Martin Kravchenko: save and we can update it here.

Aron Korenblit: Okay. So let's run this once.

This is going to get a third refresh token, which is,

yeah. exactly. We want to set this every 50 minutes,

Martin Kravchenko: 50 a for example,

Aron Korenblit: or non. So this every 50 minutes is going to get written new refresh tokens. Um, and what this means is that our other one, if one last step here, oops. I do want to save scheduling on save. Yep. Go back. Now. We just need to make our last scenario, the one we created with air table

Martin Kravchenko: integration narrative.

The ability to be

Aron Korenblit: here. Yeah. Yeah. Oh, this actually we already set this up.

Martin Kravchenko: Yeah, exactly. So what it's set up is it's just running well, of course, change the air table record and then run it again to make sure everything

Aron Korenblit: works. Okay. So we're saying this is a new title last time. Okay. And I could just run it manually because it's going to run over five minutes,

Martin Kravchenko: edit, edit, and you can run the ones.

That's actually check the HTP request if it's using that new access token. Um, if, if yeah, so headers

Aron Korenblit: headers, one, one,

Martin Kravchenko: as you can see it's using.

Aron Korenblit: Yeah. It's using, I can't, I can't say because it's cut off, but I can post it. Yeah. It's using the new one. No, this is the, the refresh showcase, uh,

the, where to, where did we, but

Martin Kravchenko: what, what do they get from the data store? Let's check again. Yeah. Um, X token. I think the X is no, this

Aron Korenblit: works, this works. That it work. Let's see if it worked

Martin Kravchenko: well, of course it's work, but I'm not sure. I'm not sure that, uh, it's

Aron Korenblit: it's not updated.

Martin Kravchenko: It's actually updated the data.

Aron Korenblit: Oh, because it's using an old refresh token. Let's just go back here. So is it edit this one?

Martin Kravchenko: Let's actually go to the data store and see what happened. And what's happened in there,

Aron Korenblit: uh, in the data store itself? Yeah. Okay. Folks, we're going to be five minutes late on this stream.

Uh, no, I need to go and just

Martin Kravchenko: browse and just browse. Just browsing. Um, okay. It's weird.

Aron Korenblit: What makes you say it didn't update the access token

Martin Kravchenko: now? I think it was a different knowledge, like dash underscore between or something like that. Yeah, but we

Aron Korenblit: can't see the end. Oh, I see what you mean right here. Okay.

Um, let's go into scenarios. I've got it on, but it might be because maybe just really around it. Yeah. How do I, it might just be because

Martin Kravchenko: maybe go maybe

Aron Korenblit: the refresh refresh exactly when I turned it on

Martin Kravchenko: and refresh. So let's, let's check it now. Let's check now. Right?

Aron Korenblit: Okay. Then go record.

Martin Kravchenko: So that's access token.

Aron Korenblit: Can't see the ending of it. Dash H dash

Martin Kravchenko: H H. Okay.

Aron Korenblit: Okay. In tech and then the last item, number two, we can just do new title, new, new, and then we can manually run this before. We'll find the

Okay. Um, and now let's see what token it's using here. Headers one is this. Yeah, it seems to be looking using the right words. And so if we go here or here, refresh

new, new boom, good job. You got to come


Wrap-up
---

Aron Korenblit: um, well, Martin, I think the next step here is actually I want to rebuild this whole flow and air table eventually such that, you know, we use Integromat to refresh the access to. But then update that information Airtable and then retrieve it so that we can actually kind of update everything from air table, but that's over a future stream.

Martin. Huge. Thanks for coming folks. Hope, hope, hope that was useful. Hope folks can feel, uh, confident in, uh, OAuth, uh, Martin, as a, as a last step here. I'd love to know how folks can get in touch with you. What is the best way to reach out to you, especially with OAuth questions, which I'm sure you're going to get?

Martin Kravchenko: Well, I think the best, the best way is to actually email hello ads, automation, fullers.com. You can check out the website or it can also collect on, on LinkedIn, which is just my name Martin. Okay, cool.

Aron Korenblit: Well, huge. Thanks everyone. Thanks for coming Martin. I'll see you around. Thanks again. And thanks everyone for coming.

And maybe I'll see you next week, but probably in two weeks, uh, with something new.

Martin Kravchenko: Thank you so much Heron and yeah, thank you to all the years

Aron Korenblit: again. Thanks Brian. Really appreciate it.



Key takeaways

Similar streams