首页 > 解决方案 > 获取 Yammer 消息

问题描述

我正在尝试为使用 powershell 调用 REST 的 AD 组的一部分用户从 yammer 获取所有消息。但我的代码在“ $webRequest = Invoke-WebRequest –Uri $urlToCall –Method Get -Headers ”行中断。我收到“未经授权”和“无法连接”错误。下面是我从http://www.nubo.eu/en/blog/2016/12/Get-All-Yammer-Messages-Through-Rest-API-With-PowerShell/使用的代码。请帮忙。

baererToken = "Put your baerer token here"
$yammerBaseUrl = "https://www.yammer.com/api/v1"

Function Get-BaererToken() {
    $headers = @{ Authorization=("Bearer " + $baererToken) }
    return $headers
}

Function Get-YamMessages($limit, $allMessages, $lastMessageId) {
    $yammerBatchSize = 20;
    if ($limit -eq $null) {
        $threadLimit = $yammerBatchSize
    }
    else {
        $threadLimit = $limit
    }

    if ($allMessages -eq $null) {
        $allMessages = New-Object System.Collections.ArrayList($null)
    }

    $currentMessageCount = $allMessages.Count;

    if ($currentMessageCount -ge $threadLimit) {
        return $allMessages
    } elseif ($currentMessageCount + $yammerBatchSize -gt $threadLimit) {
        $threadLimit = $threadLimit % $yammerBatchSize;
    } else {
        $threadLimit = $yammerBatchSize
    }

    $urlToCall = "$($yammerBaseUrl)/messages.json"
    $urlToCall += "?limit=" + $threadLimit;
    if ($lastMessageId -ne $null) {
        $urlToCall += "&older_than=" + $lastMessageId;
    }

    $headers = Get-BaererToken
    Write-Host $urlToCall
    $webRequest = Invoke-WebRequest –Uri $urlToCall –Method Get -Headers $headers

    if ($webRequest.StatusCode -eq 200) {
        $results = $webRequest.Content | ConvertFrom-Json
        if ($results.messages.Length -eq 0) {
            return $allMessages
        }
        $allMessages.AddRange($results.messages)
    }

    if ($allMessages.Count -lt $limit) {
        $lastMessageId = $allMessages[$allMessages.Count -1].id;
        return Get-YamMessages $limit $allMessages $lastMessageId
    }
    else {
        return $allMessages
    }
}

$messageResults = Get-YamMessages 100

标签: restpowershellyammer

解决方案


推荐阅读