Search code examples
sharepointweb-partsfeed

Sharepoint online: Programmatically post to news feed


I want to create a webpart which can post data to a specific Sharepoint's news feed, but have been unable to locate any good documentation. The only link I found was: https://msdn.microsoft.com/library/e9ad06a1-831d-8ed0-c76e-8b049f14216f%28Office.15%29.aspx

My question is: what method can I use to post data to a Sharepoint-site's news feed?

In the link they mention that you can post to "the URL of a site feed". Is that the same as a news feed? Anyone who has done something similar?


Solution

  • We can use JSOM or REST API to achieve it.

    REST API:

    <script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
    <script type="text/javascript">
    $(function(){   
        $.ajax( {
            url: weburl + "/_api/social.feed/my/Feed/Post",
            type: "POST",
            data: JSON.stringify({ 
                'restCreationData':{
                    '__metadata':{ 
                        'type':'SP.Social.SocialRestPostCreationData'
                    },
                    'ID': null, 
                    'creationData':{ 
                        '__metadata':{ 
                            'type':'SP.Social.SocialPostCreationData'
                        },
                        'ContentText': "the post content text",
                        'UpdateStatusText':false
                    } 
                } 
            }),
            headers: { 
                "accept": "application/json;odata=verbose",
                "content-type":"application/json;odata=verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").val()
            },
            success: function(){
                console.log("success to post ");
            },
            error: function (xhr, ajaxOptions, thrownError) { 
                alert("POST error:\n" + xhr.status + "\n" + thrownError);
            }
        });
    });
    </script>
    

    JSOM:

    <script type="text/javascript" src="/_layouts/15/sp.userprofiles.js"></script>
    <script type="text/javascript">
    SP.SOD.executeOrDelayUntilScriptLoaded(WritePost, 'SP.UserProfiles.js');
    function WritePost() {
        var oclientContext;
        var ofeedManager;
        var oresultThread;
    
        // Initialize the current client context and the SocialFeedManager instance.
        oclientContext = SP.ClientContext.get_current();
        ofeedManager = new SP.Social.SocialFeedManager(oclientContext);
    
        // Add a link to be included in the post.
        var olinkDataItem = new SP.Social.SocialDataItem();
        olinkDataItem.set_itemType(SP.Social.SocialDataItemType.link);
        olinkDataItem.set_text('My blog url');
        olinkDataItem.set_uri('http://sundarnarasiman.net');
        var osocialDataItems = [ olinkDataItem ];
    
        // Set up the post content
        var opostCreationData = new SP.Social.SocialPostCreationData();
        opostCreationData.set_contentText('The text for the post, which contains a {0}.');
        opostCreationData.set_contentItems(osocialDataItems);
    
        // Write the post
        oresultThread = ofeedManager.createPost(null, opostCreationData);
        oclientContext.executeQueryAsync(WriteSucceeded, WriteFailed);
    }
    
    function WriteSucceeded(sender, args) {
        //$get("ResultMessage").innerText = 'Successfully posted the message to Posts';
    }
    function WriteFailed(sender, args) {
        //$get("ResultMessage").innerText = 'Failure in writing message' + args.get_message();
    }
    </script>
    

    Refer to:

    Post/Reply a post by Social feed REST API in SharePoint 2013

    How to publish a post to SharePoint Social Feed using SharePoint 2013 JSOM