2016-04-12 3 views
0

Ich versuche, einen Benutzer hinzuzufügen, der auf eine Schaltfläche in einer SharePoint-Website (Online-Site) auf eine Office 365-Gruppe klickt. Ich weiß, dass dies über JSON mit der Add Member API erfolgen kann.Mitglied zur Office 365-Gruppe mit JSON/JavaScript hinzufügen

https://github.com/OfficeDev/microsoft-graph-docs/blob/master/api-reference/v1.0/api/group_post_members.md

Ich bin aber wirklich unerfahren, wenn es um JSON kommt und halten Sie die POST-Funktion vermasselt. Dies ist der Code, den ich gerade habe, alles vor dem Komma hat gut funktioniert.

"code": "InvalidAuthenticationToken", "message": "Bearer access token is empty." 

Als Lösung können Sie folgende Schritte ausführen:

function showButton() { 

    $('btn-1').on('click', function(event) { 
     var userProfileProperties 
     var clientContext = new SP.ClientContext.get_current(); 
     var peopleManager = new SP.UserProfiles.PeopleManager(clientContext); 
     userProfileProperties = peopleManager.getMyProperties(); 
     clientContext.load(userProfileProperties); 
     clientContext.executeQueryAsync(onSuccess, onFail); 

     function onSuccess(){ 
      accountProperties = userProfileProperties.get_userProfileProperties(); 
      accountId = accountProperties['msOnline-ObjectId']; 
      //JSON Query 
      jQuery.ajax({ 
       url: "https://mysite.sharepoint.com/groups/groupID/members/$ref"; 
       method: "POST"; 
       contentType: "application/json"; 
       dataType: 'json', 
       { 
        "@odata.id": "https://graph.microsoft.com/v1.0/directoryObjects/" + accountId 
       }; 
      }); 
     }; 
     function onFail(){ 
      alert(failed); 
     }; 
    }); 
}; 

Antwort

0

Sie in Ihrem Dokument finden Sie Authentifizierungs-Token finden sich in den Antrag Header .Ohne Authentifizierungs-Token erforderlich ist, erhalten Sie einen Fehler wie erhalten : 1. Registrieren Sie eine JavaScript-Anwendung in Azure AD und konfigurieren Sie Ihre App so, dass der implizite OAuth 2.0-Genehmigungsfluss zugelassen wird. Tokens werden mithilfe des impliziten OAuth 2.0-Gewährungsablaufs abgerufen. Mithilfe der impliziten Berechtigung fordert Ihre Anwendung ein Zugriffstoken von Azure AD für den derzeit angemeldeten Benutzer an, indem sie den Benutzer an eine Autorisierungs-URL sendet, in der sich der Benutzer mit seinen Office 365-Anmeldeinformationen anmeldet und dann mit dem Zugriffstoken zurück zur App geleitet wird in der URL.

2.Add Berechtigungen für Graph API.

3. Fügen Sie Ihrem Sharepoint online eine HTML-Seite hinzu (im Explorer-Modus).

4.Bearbeiten die html, unten Funktion schreiben, ein Zugriffstoken zu erhalten:

function requestToken() { 
    // Change clientId and replyUrl to reflect your app's values 
    // found on the Configure tab in the Azure Management Portal. 
    // Also change {your_subdomain} to your subdomain for both endpointUrl and resource. 
    var clientId = '3dadb44e-feaa-4158-90f5-e129e15db66d';//ID of your App in Azure 
    var replyUrl = 'https://o365e3w15.sharepoint.com/sites/XXX/app.html'; //my sharepoint page that requests 
    //an oauth 2 authentification and data 
    //It is also referenced in the REPLY URL field of my App in Azure 
    var endpointUrl = 'https://graph.microsoft.com/v1.0/me/messages'; 
    var resource = "https://graph.microsoft.com/"; 
    var authServer = 'https://login.windows.net/common/oauth2/authorize?'; 
    //var authServer = 'https://login.microsoftonline.com/common/oauth2/authorize?';//this works either 
    var responseType = 'token'; 

    var url = authServer + 
     "response_type=" + encodeURI(responseType) + "&" + 
     "client_id=" + encodeURI(clientId) + "&" + 
     "resource=" + encodeURI(resource) + "&" + 
     "redirect_uri=" + encodeURI(replyUrl); 

    window.location = url; 
} 
  1. Danach könnten Sie einen Ajax-Aufruf machen api Endpunkt grafisch darstellen zu erhalten/Post-Anforderung zum Beispiel erhalten Nachrichten des aktuellen Benutzers:

    var endpointUrl = "https://graph.microsoft.com/v1.0/me/messages"; 
    
    var xhr = new XMLHttpRequest(); 
    xhr.open("GET", endpointUrl); 
    var myToken = getToken(); 
    // The APIs require an OAuth access token in the Authorization header, formatted like this: 
    //'Authorization: Bearer <token>'. 
    xhr.setRequestHeader("Authorization", "Bearer " + myToken); 
    
    // Process the response from the API. 
    xhr.onload = function() { 
        if (xhr.status == 200) { 
        //alert('data received'); 
        var message=""; 
        var object = JSON.parse(xhr.response); 
        for(i=0;i<object.value.length;i++){ 
        message+='Subject: ' + object.value[i].subject + '<br>';  
        } 
        document.getElementById("results").innerHTML = message; 
        } else { } 
    } 
    // Make request. 
    xhr.send(); 
    
  2. Anzeige dieses app.html in jede Seite Sharepoint-Webpart, indem sie es in einem iframe-Tag aufgerufen wird.

Alles Detail Schritte Sie in this article finden, habe ich getestet und funktionieren gut in meiner Seite.

+0

Ich sehe, wie dies das OAuth-Token erhalten wird, aber Probleme haben, das Token für jeden Benutzer aufzurufen, der auf die Seite zugreift, auf der sich meine Schaltfläche befindet. –

+0

Bitte teilen Sie uns mit, was Ihr Fehler ist –

Verwandte Themen