🔍 Code Extractor

function test_sharepoint_with_token

Maturity: 46

Tests SharePoint REST API connectivity and authentication by making a GET request to retrieve site information using a provided access token.

File:
/tf/active/vicechatdev/SPFCsync/diagnose_permissions.py
Lines:
126 - 149
Complexity:
simple

Purpose

This function is designed to validate SharePoint API access tokens by attempting to retrieve basic site information from a SharePoint site. It's useful for debugging authentication issues, testing different OAuth scopes, and verifying that tokens have the necessary permissions to access SharePoint resources. The function provides detailed console output including success/failure status, site title on success, and specific error messages for common authentication issues like 'Unsupported app only token' errors.

Source Code

def test_sharepoint_with_token(access_token, site_url, scope_name):
    """Test SharePoint API with a specific token."""
    headers = {
        'Authorization': f'Bearer {access_token}',
        'Accept': 'application/json'
    }
    
    api_url = f"{site_url}/_api/web"
    
    try:
        response = requests.get(api_url, headers=headers)
        if response.status_code == 200:
            print(f"   ✅ SharePoint API call successful with {scope_name}")
            try:
                data = response.json()
                print(f"   Site title: {data.get('Title', 'Unknown')}")
            except:
                pass
        else:
            print(f"   ❌ SharePoint API call failed with {scope_name}: {response.status_code}")
            if response.status_code == 401 and "Unsupported app only token" in response.text:
                print("   💡 This scope also gets 'Unsupported app only token' error")
    except Exception as e:
        print(f"   ❌ Exception testing SharePoint with {scope_name}: {e}")

Parameters

Name Type Default Kind
access_token - - positional_or_keyword
site_url - - positional_or_keyword
scope_name - - positional_or_keyword

Parameter Details

access_token: A valid OAuth 2.0 access token (string) obtained from Azure AD/Microsoft Identity Platform that will be used in the Authorization header for authenticating the SharePoint API request. Should have appropriate SharePoint permissions.

site_url: The full URL (string) of the SharePoint site to test against, typically in the format 'https://{tenant}.sharepoint.com/sites/{sitename}' or 'https://{tenant}.sharepoint.com' for the root site. Should not include the '/_api/web' endpoint suffix.

scope_name: A descriptive name (string) identifying the OAuth scope or token type being tested. Used only for logging purposes to help identify which token/scope combination is being validated in the console output.

Return Value

This function does not return any value (implicitly returns None). All output is printed directly to the console, including success indicators (✅), failure indicators (❌), informational messages (💡), and the site title when successfully retrieved.

Dependencies

  • requests
  • json

Required Imports

import requests
import json

Usage Example

import requests
import json

def test_sharepoint_with_token(access_token, site_url, scope_name):
    headers = {
        'Authorization': f'Bearer {access_token}',
        'Accept': 'application/json'
    }
    api_url = f"{site_url}/_api/web"
    try:
        response = requests.get(api_url, headers=headers)
        if response.status_code == 200:
            print(f"   ✅ SharePoint API call successful with {scope_name}")
            try:
                data = response.json()
                print(f"   Site title: {data.get('Title', 'Unknown')}")
            except:
                pass
        else:
            print(f"   ❌ SharePoint API call failed with {scope_name}: {response.status_code}")
            if response.status_code == 401 and "Unsupported app only token" in response.text:
                print("   💡 This scope also gets 'Unsupported app only token' error")
    except Exception as e:
        print(f"   ❌ Exception testing SharePoint with {scope_name}: {e}")

# Example usage
access_token = "eyJ0eXAiOiJKV1QiLCJhbGc..."
site_url = "https://contoso.sharepoint.com/sites/mysite"
scope_name = "Sites.Read.All"

test_sharepoint_with_token(access_token, site_url, scope_name)

Best Practices

  • Ensure the access token has not expired before calling this function
  • Use appropriate OAuth scopes for SharePoint access (e.g., Sites.Read.All, Sites.ReadWrite.All)
  • Handle the console output appropriately in production environments - consider modifying to return status instead of printing
  • Be aware that app-only tokens may not work with all SharePoint endpoints and may require delegated permissions
  • The function catches all exceptions broadly - consider more specific exception handling for production use
  • Verify network connectivity and firewall rules allow access to SharePoint URLs
  • Consider adding timeout parameters to the requests.get() call to prevent hanging on network issues
  • The site_url parameter should not end with a trailing slash or include the API endpoint path

Similar Components

AI-powered semantic similarity - components with related functionality:

  • function test_sharepoint_api_call 91.9% similar

    Tests SharePoint REST API connectivity by making an authenticated GET request to retrieve basic site information and validates the access token and permissions.

    From: /tf/active/vicechatdev/SPFCsync/diagnose_sharepoint.py
  • function test_sharepoint_token 88.1% similar

    Tests SharePoint OAuth2 authentication by acquiring an access token using client credentials flow and validates it with a SharePoint API call.

    From: /tf/active/vicechatdev/SPFCsync/diagnose_sharepoint.py
  • function test_azure_token 78.0% similar

    Tests Azure AD authentication by attempting to acquire an OAuth2 access token using client credentials flow for Microsoft Graph API access.

    From: /tf/active/vicechatdev/SPFCsync/diagnose_sharepoint.py
  • function test_rest_client 76.0% similar

    A test function that validates the SharePoint REST API client by testing authentication, document listing, and file download capabilities.

    From: /tf/active/vicechatdev/SPFCsync/test_rest_client.py
  • function test_graph_api_access 75.1% similar

    Tests Microsoft Graph API access by obtaining an OAuth2 token and verifying connectivity to check tenant settings for SharePoint integration.

    From: /tf/active/vicechatdev/SPFCsync/check_tenant_config.py
← Back to Browse