Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何通过Azure上载小文件API在Yammer API上上载文件 如何将附件与Yammer消息一起上载?_Php_File Upload_Guzzle_Yammer_Yammer Api - Fatal编程技术网

Php 如何通过Azure上载小文件API在Yammer API上上载文件 如何将附件与Yammer消息一起上载?

Php 如何通过Azure上载小文件API在Yammer API上上载文件 如何将附件与Yammer消息一起上载?,php,file-upload,guzzle,yammer,yammer-api,Php,File Upload,Guzzle,Yammer,Yammer Api,通过/messages.json端点的attachment1等字段的任何遗留方法将不再有效 新的方法没有很好的文档记录: 我在下面给出了一个PHP示例,但在任何语言中都可以这样做。您必须分两部分进行操作 首先将图片上传到并获取图片的id 如往常一样,将您的信息连同新获得的图片id发送至 注意:我将在这里使用库进行其余调用 1.将图片发送到Azure云 当然,您必须用自己的变量替换类变量。以及文件的内容类型 2.发送您的消息 这太棒了,埃尔多,谢谢分享。您是如何获得访问令牌的?似乎需要AAD访问令

通过
/messages.json
端点的
attachment1
等字段的任何遗留方法将不再有效

新的方法没有很好的文档记录:

我在下面给出了一个PHP示例,但在任何语言中都可以这样做。

您必须分两部分进行操作
  • 首先将图片上传到并获取图片的id
  • 如往常一样,将您的信息连同新获得的图片id发送至
  • 注意:我将在这里使用库进行其余调用

    1.将图片发送到Azure云 当然,您必须用自己的变量替换类变量。以及文件的内容类型

    2.发送您的消息
    这太棒了,埃尔多,谢谢分享。您是如何获得访问令牌的?似乎需要AAD访问令牌,而开发者令牌无法工作。你使用的是基于浏览器的oauth流吗?好的,我还想出了其他办法。有些Yammer网络使用SharePoint进行文件存储,有些则不使用。如果没有,旧的开发人员令牌仍然有效。@DerekGusoff确实我使用了OAuth flow用户端(然后是服务器访问),根据文档,您必须执行浏览器身份验证。然后我只是使用了从API中获得的承载令牌,它起了作用。
    protected function yammerFileUpload(string $file, string $filename): int
    {
        $multipart = [
            [
                'name'      => 'network_id',
                'contents'  => $this->networkId,
            ],
            [
                'name'      => 'group_id',
                'contents'  => $this->groupId,
            ],
            [
                'name'      => 'target_type',
                'contents'  => 'GROUP',
            ],
            [
                'name'      => 'filename',
                'contents'  => $filename,
            ],
            [
                'name'      => 'file',
                'contents'  => $file,
                'filename'  => $filename,
                'headers'   => ['Content-Type' => 'image/jpeg']
            ],
        ];
    
        $client = new Client();
    
        $options = [
            'headers'       => [
                'Accept'        => 'application/json',
                'Authorization' => "Bearer $this->yammerToken",
            ],
            'multipart'     => $multipart,
        ];
      
        $response = $client->request('POST', 'https://filesng.yammer.com/v4/uploadSmallFile', $options);
    
        return \json_decode((string)$response->getBody(), true)['id'];
    }
    
    public function postMessage(string $message, string $file): array
    {
        $fileId = $this->yammerFileUpload($file, 'my-file.jpg');
    
        $client = new Client();
    
        $options = [
            'headers'   => [
                'Accept'        => 'application/json',
                'Authorization' => "Bearer $this->token",
            ],
            'form_params' => [
                'body'               => $message,
                'group_id'           => $this->groupId,
                'attached_objects[]' => "uploaded_file:$fileId",
            ],
        ];
    
        $response = $client->request('POST', 'https://www.yammer.com/api/v1/messages.json', $options);
    
        return \json_decode((string)$response->getBody(), true);
    }