2017-07-28 7 views
0

Ich versuche, Benutzer zu Yammer-Gruppe hinzufügen, Dafür muss ich das Token des Benutzers, den ich der Gruppe hinzufügen möchten. Ich habe den folgenden Endpunkt verwendet, um den Benutzer für den Zugriff auf TokenYammer get Benutzer Token Yammer REST API

https://api.yammer.com/api/v1/oauth/tokens.json?user_id={0}&consumer_key={1} 

Für consumer_key ich die ClientID der yammer Anwendung bin vorbei, die ich angelegt habe (Verified Admin-Konto verwenden).

Das Problem ist, dass für einige Benutzer der Endpunkt funktioniert und mir die JSON-Antwort zurückgibt. Aber für einige Benutzer ist der Endpunkt der Rückkehr „Der Remoteserver hat einen Fehler zurückgegeben:. (400) Bad Request

Bitte finden meinen Code unten

private YammerJSONUserContract GetUserDetailsFromYammer(string userID, string clientID) 
    { 
     YammerJSONUserContract objUser = null; 
     try 
     { 
      string URL = string.Format(this.userImpersonationURL, userID, clientID); 
      string jsonString = PostYammerJson(URL, this._adminAccessToken, "GET"); 
      YammerJSONUserContract [] objUserCollection = Newtonsoft.Json.JsonConvert.DeserializeObject<YammerJSONUserContract[]>(jsonString); 
      objUser = objUserCollection[0]; 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
     return objUser; 
    } 
private string PostYammerJson(string url, string accessToken, string httpMethod) 
    { 
     string json = string.Empty; 
     try 
     { 

      HttpWebRequest YammerRequest = HttpWebRequest.Create(url) as HttpWebRequest; 
      YammerRequest.Method = httpMethod; 
      YammerRequest.ContentType = "application/json; odata=verbose"; 
      YammerRequest.Accept = "application/json; odata=verbose"; 
      YammerRequest.ContentLength = 0; 
      YammerRequest.Headers.Add("Authorization", string.Concat("Bearer ", accessToken)); 
      using (HttpWebResponse response = YammerRequest.GetResponse() as HttpWebResponse) 
      { 
       Encoding encode = Encoding.GetEncoding("utf-8"); 
       StreamReader reader = new StreamReader(response.GetResponseStream(), encode); 
       json = reader.ReadToEnd(); 
      } 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
     return json; 
    } 

Kann jemand bitte lassen Sie mich wissen, was ich fehlt und warum die API die Benutzerdetails für einige Benutzer aber nicht alle zurückgibt.

Warten auf Ihre Antwort.

Prost Amlan

+0

Was ist PostYammerJson? Bitte schreiben Sie auch den Code davon. –

Antwort

0

Dies ist eine lange gedreht, aber vielleicht brauchen Sie Authorization-Header auf Ihre Anfrage mit dem Wert „oauth“ hinzuzufügen.

Etwas wie:

request.Headers.Authorization = oauth; 
+0

bereits erledigt, bitte überprüfen Sie den Code –

0

Sie sagten, Sie ein erfolgreiches Token für einige Benutzer erhalten aber einen 400-Fehler für die anderen, damit ich nehme an, Sie den Anruf korrekt zu forma. Die einzige andere Variable ist der Benutzer. Haben Sie überprüft, dass die Benutzer, für die ein 400-Fehler vorliegt, aktiv sind und nicht in einem ausstehenden, unterbrochenen oder gelöschten Zustand sind?

Verwandte Themen