Monday, June 29, 2026

I'm Back — And This Blog Is Never Going to Be the Same

 

TechNerdiez | June 2026


If you've been here before, you probably remember this as a SharePoint blog. PowerShell scripts, CSOM snippets, OAuth flows — the kind of stuff that saved your afternoon when Microsoft's documentation decided to be unhelpful.

That was 2020. Then life happened, and the blog went quiet.

Six years is a long time in tech. SharePoint is still around (it's Microsoft, it'll outlive us all), but the conversation has completely shifted. Everything is AI now. And honestly? I got pulled in.


What I've been doing instead

I didn't stop being a nerd. I just moved the nerdery somewhere else.

I've been running EliteNeoAI — a YouTube channel where I cover AI tools, automation workflows, and what's actually worth your time in the AI space (which, if you've been paying attention, is approximately 20% of what gets hyped). I've also been building educational content for kids, experimenting with Make.com, and generally spending an embarrassing amount of time testing tools that promise to change everything.

What I kept noticing: there's a lot of content out there for beginners, a lot for developers, and almost nothing for people who are technical enough to be dangerous but not trying to build the next GPT. People like us.

That gap is why I'm back.


What this blog is now

TechNerdiez is pivoting. Still technical. Still practical. But the focus is shifting to:

  • AI tools that are actually useful — not just another "top 10 AI tools" list, but real walkthroughs with real use cases
  • Automation workflows — Make.com, Zapier, n8n, Gemini API, and how to string these things together to actually save time
  • AI in the Microsoft ecosystem — Copilot for M365, AI in Power Automate, using AI to do the SharePoint things faster. Yes, it's still in here.

The old posts aren't going anywhere. If you landed here from a 2013 Google search about SharePoint event receivers — you're welcome, and please don't judge the CSS.


Why bother with a blog in 2026?

Fair question. Everyone's on YouTube, TikTok, LinkedIn. Blogs feel vintage.

But some things are just better explained in writing. Code snippets. Step-by-step setups. Stuff you want to search, find, copy, and close the tab. A 90-second Short can't do that.

Also, I just like writing. Sue me.


If you want to follow along, you can subscribe (old school, I know) or find me on YouTube at EliteNeoAI where I post the video version of a lot of what ends up here.

Good to be back.

— Misty


Tags: AI tools, automation, Make.com, comeback, EliteNeoAI

Friday, April 3, 2020

Access Sharepoint online using Azure AD app (Oauth On Behalf Of flow)


I worked on a sample ps script that uses ADAL to achieve On-Behalf-Of flow and use the access token to access Sharepoint Online resource



Steps

2     2.  Add client secret

3      3. Add permission to Sharepoint

4       4. Run the following in Windows Powershell ISE


Install the ADAL PS module using the below command

Install-Module -Name ADAL.PS


 Sample Script

$authority = "https://login.microsoftonline.com/tenant.onmicrosoft.com"
 $resourceUrl =  "<<application Id>>"     #On-Behalf_of flow- We need to get token for the appid

$clientId = "<<application Id>>"
$redirectUri = "https://login.microsoftonline.com/common/oauth2/nativeclient" # you should have marked the app as native client in Azure AD
$clientSecret = ConvertTo-SecureString "<<Client secret>>" -AsPlainText -Force
$tenantId="<<tenant GUID>"
$userID="<<Guid of the user>>"


# I use implicit grant flow to get access token for the application
$response = Get-ADALToken -Resource $resourceUrl  -UserId $userID -ClientId $clientId -UserIdType UniqueId   -Authority $authority -PromptBehavior: Auto -RedirectUri $redirectUri

$token = $response.AccessToken
$spresourceUrl="https://tenant.sharepoint.com/.default"

# I use the access token in assertion to get on-behalf-of access token for the Sharepoint online resource


$body = @{}
$body.Add("grant_type","urn:ietf:params:oauth:grant-type:jwt-bearer")
$body.Add("client_id","$clientId ")
$body.Add("client_secret","$clientSecret")
$body.Add("assertion","$token")
$body.Add("scope","$spresourceUrl")
$body.Add("requested_token_use","on_behalf_of")



$curl="https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token"
$res=Invoke-WebRequest -Method POST -Uri $curl -Body $body 
$authtoken =$res.Accesstoken

$headers = @{}
$headers.Add("Accept","application/json")
$headers.Add("Authorization","Bearer $authtoken")

$curl2="https://tenant.sharepoint.com/_api/search/query?querytext='test'"
$response1 =  Invoke-RestMethod -Method Get -Uri $curl2 -Headers $headers -Verbose -ContentType application/json
$response1








Access Sharepoint online using Azure AD app (Oauth Implicit grant flow)


I worked on a sample ps script that uses ADAL to achieve implicit grant flow and use the access token to access Sharepoint Online resource



Steps

2.      Add client secret

3.      2. Add permission to Sharepoint

4.      3. Run the following in Windows Powershell ISE


Install the ADAL PS module using the below command

Install-Module -Name ADAL.PS


 Sample Script

$authority = "https://login.microsoftonline.com/tenant.onmicrosoft.com"
$resourceUrl =https://tenant.sharepoint.com"
$clientId = "<<application Id>>"
$redirectUri = "https://login.microsoftonline.com/common/oauth2/nativeclient" # you should have marked the app as native client in Azure AD
$clientSecret = ConvertTo-SecureString "<<Client secret>>" -AsPlainText -Force
$tenantId="<<tenant GUID>"
$userID="<<Guid of the user>>"



$response = Get-ADALToken -Resource $resourceUrl  -UserId $userID -ClientId $clientId -UserIdType UniqueId   -Authority $authority -PromptBehavior: Auto -RedirectUri $redirectUri

$token = $response.AccessToken

$headers = @{}
$headers.Add("Accept","application/json")
$headers.Add("Authorization","Bearer $token")

$curl="https://tenant.sharepoint.com/_api/search/query?querytext='test'"
$response1 =  Invoke-RestMethod -Method Get -Uri $curl -Headers $headers -Verbose -ContentType application/json
$response1