2015-02-27 4 views
0

Я искал сеть для базового примера winforms, написанного на vb.net, для загрузки файла в onedrive. Кто-нибудь знает?Пример приложения onedrive winforms vb.net

Я пытаюсь получить файл, загруженный с помощью приложения winforms в vb.net. Я так далеко, как получить аутентификации работает ... но вызова следующий метод возвращает 401 ...

я сделал следующее:

общей рамки As String = «wl.skydrive_update» общей client_id As String = "0000000040144E26" Общий signInUrl As New Uri ([String] .Format ("https://login.live.com/oauth20_authorize.srf?client_id= {0} = & redirect_uri https://login.live.com/oauth20_desktop.srf&response_type=code&scope= {1}", client_id, масштаб))

Private Sub cmdOneDriveAuth_Click (отправителем в качестве объекта, e As EventArgs) Ручки cmdOneDriveAuth.Click Попробуйте Dim auth As New FrmAuthBrowser auth.WebBrowser1.Navigate (signInUrl) auth.Show()

Catch ex As Exception 

    End Try 
End Sub 

, а затем в окне входа:

Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted 
    Try 
     If WebBrowser1.Url.AbsoluteUri.Contains("code=") Then 
      Dim AuthCode As String = System.Web.HttpUtility.ParseQueryString(WebBrowser1.Url.Query)("code") 
      My.Settings.OneDrive_Enabled = True 
      My.Settings.OneDrive_AuthCode = AuthCode 
      My.Settings.Save() 
      Me.Dispose() 
     End If 


    Catch ex As Exception 
     MsgBox(ex.ToString) 
    End Try 
End Sub 

, но когда я пытаюсь получить информацию корня, я получаю 401 ...

Private Sub Button1_Click (отправитель As Object, е Как EventArgs) Ручки Button1.Click Попробуйте Dim клиент As New WebClient() Dim результат = кли ent.OpenRead (New Uri ("https://apis.live.net/v5.0/me/skydrive?access_token=" + My.Settings.OneDrive_AuthCode)) Dim стер Как StreamReader = New StreamReader (результат) MsgBox (sr.ReadToEnd()) Поймайте экс Как исключение MsgBox (ex.ToString) Конец попытки Конец Sub

Может ли кто-нибудь предоставить мне руководство?

ответ

0

Похоже, вы используете поток кода OAuth, но вам не хватает шага. «Код», который вы возвращаете, не совпадает с именем access_token. Сначала вам нужно сделать другой звонок в сервер входа, чтобы обменять ваш код на access_token.

POST https://login.live.com/oauth20_token.srf 
Content-Type: application/x-www-form-urlencoded 

client_id={client_id}&redirect_uri={redirect_uri}&client_secret={client_secret} 
&code={code}&grant_type=authorization_code 

Здесь вы можете найти более подробную информацию здесь http://onedrive.github.io/auth/msa_oauth.htm#code-flow.

OneDrive только что выпустил новый API, поэтому я бы посоветовал вам проверить его. http://onedrive.github.io/

Существует также пример приложения Windows/C#, на котором вы можете посмотреть, как войти и загрузить файлы. https://github.com/OneDrive/onedrive-explorer-win

Смежные вопросы