Sto cercando di integrare OneDrive for Busines in un'app Web Form. Per questo sto usando la documentazione data a questo indirizzo https://dev.onedrive.com/auth/aad_oauth.htm Nel web Modulo App ho due pagina primo è pagina di login, che dispone di un pulsante per il login In pulsante di accesso clicca sto facendo una richiesta GET a Microsoft Onedrive for business API utilizzando il seguente codiceOneDrive for Business: "invalid_request", "error_description": "AADSTS90014: il corpo della richiesta deve contenere il seguente parametro: 'grant_type
HttpClient client = new HttpClient();
Redirecturi = Uri.EscapeDataString(Redirecturi);
string url = string.Format("https://login.windows.net/common/oauth2/authorize?response_type=code&client_id={0}&redirect_uri={1}", ClienId, Redirecturi);
var response = client.GetAsync(url);
var json = response.Result.Content.ReadAsStringAsync();
Label2.Text = json.Result;
Quando faccio clic sul pulsante di accesso mi sta portando a micorosoft login servie e mi sta inviando a callback.aspx pagina con il codice di accesso (Redirect URI configurato su Azure)
ho ottenuto il codice di accesso Nella seconda pagina sto riscattando il codice di accesso e fare una richiesta POST per ottenere il token di autenticazione ecco il codice per la seconda pagina.
private string BaseUri="https://login.windows.net/common/oauth2/token";
public string Redirecturi = "http://localhost:51642/CallBack.aspx";
public string ResourcesId = "https://api.office.com/discovery/";
private string ClienId = "180c6ac4-5829-468e-.....-822405804862"; ///truncated//azure
private string ClientSecert = "G4TAQzD8d7C4...OE6m366afv8XKbTCcyXr4=";//truncated
protected void Page_Load(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(Request.QueryString[OAuthConstants.AccessToken]))
{
// There is a token available already. It should be the token flow. Ignore it.
return;
}
if (!string.IsNullOrEmpty(Request.QueryString[OAuthConstants.Code]))
{
string _accessCode = Request.QueryString[OAuthConstants.Code];
HttpClient client = new HttpClient();
// BaseUri = Uri.EscapeDataString(BaseUri);
Redirecturi = Uri.EscapeDataString(Redirecturi);
ResourcesId = Uri.EscapeDataString(ResourcesId);
string url = string.Format("{0}?client_id={1}&redirect_uri={2}&grant_type=authorization_code&client_secret={3}&code={4}&grant_type=authorization_code&resource={5}", BaseUri, ClienId, Redirecturi, ClientSecert, _accessCode, ResourcesId);
var response = client.PostAsync(url, null);
var json = response.Result.Content.ReadAsStringAsync();
Response.Write(json);
}
}
Ma invece di risposta sto ottenendo l'errore seguente. Quale dice include il grant_type in url. Ho già aggiunto (puoi controllare il codice). Senza includere anche questo sto ricevendo lo stesso errore.
Ecco errore
{"error":"invalid_request","error_description":"AADSTS90014: The request body must contain the following parameter: 'grant_type'.\r\nTrace ID: 2adb3a7f-ceb1-4978-97c4-3dc2d3cc3ad4\r\nCorrelation ID: 29fb11a0-c602-4891-9299-b0b538d75b5f\r\nTimestamp: 2015-07-15 09:58:42Z","error_codes":[90014],"timestamp":"2015-07-15 09:58:42Z","trace_id":"2adb3a7f-ceb1-4978-97c4-3dc2d3cc3ad4","correlation_id":"29fb11a0-c602-4891-9299-b0b538d75b5f","submit_url":null,"context":null}
per favore aiutatemi a sapere dove, cosa geting sbagliato. Qualsiasi tipo di aiuto sarà apprezzabile Grazie mille in anticipo
mai capito questo? Perché sto avendo lo stesso problema cercando di accedere all'endpoint usando Java –