Jak przesłać pliki do Sharepointa z WSO2 – kompletny przewodnik

Upload files to Sharepoint

Przesyłanie plików do Sharepointa poprzez REST API z autoryzacją OAuth2 może być trudne, ponieważ wymaga mieszanki konfiguracji strony internetowej Sharepointa i wywołań API OAuth2 w celu utworzenia tokena dostępu.

Wykorzystuje również stałe i zmienne strony, które powinieneś znaleźć przed użyciem mechanizmu.

Przygotowanie środowiska Sharepointa

Uzyskanie Sharepointa

Jeśli nie masz dostępu do sharepointa, wejdź na stronę https://www.microsoft.com/microsoft-365/business/compare-all-microsoft-365-business-products i zarejestruj się na Microsoft 365 Business Premium trial.

UWAGA: W ten sposób zostanie utworzone 30-dniowe bezpłatne konto próbne. Nie trzeba mieć karty kredytowej.

Zaloguj się na swoje konto i przejdź do aplikacji Sharepoint. Zapamiętaj Twój Sharepoint URL (to jest ten, który wybrałeś podczas rejestracji).

URL: https://your_site_name.sharepoint.com/_layouts/15/sharepoint.aspx

Weź nazwę hosta jako tenant your_site_name.sharepoint.com

Tworzenie aplikacji

Aby dokonać autoryzacji za pomocą OAuth2 należy najpierw stworzyć aplikację.

  1. Go to register new application (Settings / add application): https://{{tenant}}/_layouts/15/appregnew.aspx
  2. Set the following options:
  • App Type – Select An app running on a web server. (You may not have this option)
  • Client Id – Click Generate, and copy the generated value to a text file.
  • Client Secret – Click Generate, and copy the generated value to a text file.
  • Title – Enter a name for the app.
  • App Domain – Enter the domain name (127.0.0.1 is a good example).
  • Redirect URL – Enter the Callback URL. It does not have to exist. Remember to use https and add a trailing slash if you use host name only (https://127.0.0.1/ is a good example).
  1. Click create. Save the response with all parameters to a text file, you will need it for accessing Sharepoint.

Ustawienie dostępu

Będziesz potrzebował sfery swojej witryny, aby pracować z tokenami.

Wykonaj żądanie get do swojej witryny bez bycia zalogowanym. Możesz użyć curl lub Postman do tego.

GET https://{{tenant}}.sharepoint.com/_vti_bin/client.svc

Authorization: Bearer realm="realm"

Pobierz składnik Bearer realm z nagłówka odpowiedzi i zapisz go jako realm. Będzie ci to potrzebne do dalszych rozmów.

Zatwierdzenie aplikacji

Teraz następuje trudna część. Musisz upoważnić aplikację do korzystania z Sharepointa. Tutaj musisz zdecydować, jakiego rodzaju dostępu potrzebujesz.

Aby wygenerować kod do tworzenia tokena należy dostarczyć zakres. Zakres określa, które komponenty Sharepointa będziesz mógł zobaczyć lub do których będziesz mógł pisać. Wspólne zakresy to Web.Read do czytania dokumentów i Web.Write do czytania i pisania. Możesz mieć różne tokeny z różnymi zakresami, aby upewnić się, że aplikacja jest dozwolona tylko do wykonywania autoryzowanych operacji. Jeśli wiesz, że potrzebujesz tylko czytać pliki i nie będziesz nic pisać, dobrze jest utworzyć zakres tylko do odczytu, aby zabezpieczyć się przed zmianami.

Będziemy używać zakresu Web.Write, ponieważ będziemy tworzyć foldery i przesyłać pliki.

Otwórz przeglądarkę, w której jesteś zalogowany i przejdź do:

https://{{tenant}}/_layouts/15/OAuthAuthorize.aspx?client_id={{client_id}}&scope=Web.Write&response_type=code&redirect_uri={{redirect_uri}}

Pamiętaj, aby zmienić id klienta i redirect uri na to, co wygenerowałeś dla aplikacji. Parametry powinny być zakodowane w url, aby operacja się powiodła (client_id nie zawiera żadnych znaków do zakodowania, ale redirect uri powinien mieć postać redirect_uri=https%3A%2F%2F127.0.0.1%2F)

Wybierz wymagany komponent Sharepoint, jeśli jest lista (wybierz Documents, aby pracować z folderem i plikami) i kliknij trust.

Nie przejmuj się widząc stronę nie znalezioną, ponieważ użyliśmy naszej lokalnej maszyny do przekierowania. Celowe jest, aby nie przekazywać kodu do żadnej aplikacji.

Zapisz kod generujący token. Kod to wszystko po https://127.0.0.1/?code= Będzie to długi ciąg znaków, cyfr i innych znaków. Pamiętaj, aby za code przyjąć cały ciąg . code będzie ważny tylko przez 5 minut, więc musisz natychmiast stworzyć token dostępu.

Tworzenie tokena dostępu

Użyjesz kodu do stworzenia tokena dostępu do pracy z Sharepointem.

Musisz POST żądanie do swojego adresu URL realm:

https://accounts.accesscontrol.windows.net/{{realm}}/tokens/OAuth/2

Żądanie musi być przekazane jako application/x-www-form-urlencoded (parametry jak w żądaniu GET, wszystkie zakodowane URL). Będziesz potrzebował wszystkich wcześniej zapisanych zmiennych. Zasadniczym zasobem dla Sharepointa jest 00000003-0000-0ff1-ce00-000000000000 (trzeba go używać tak jak jest)

grant_type: "authorization_code"
client_id: "{{client_id}}@{{realm}}"
client_secret: "{{client_secret}}"
resource: "00000003-0000-0ff1-ce00-000000000000/{{tenant}}@{{realm}}"
code: "{{code}}"
redirect_uri: "{{redirect_uri}}"

Odpowiedź

{"token_type":"Bearer","expires_in":"28799","not_before":"1648707835","expires_on":"1648736935","resource":"00000003-0000-0ff1-ce00-000000000000/tenant@realm","access_token":"access","refresh_token":"refresh"}

Zapisz access_token i refresh_token. Ten ostatni będzie potrzebny do wygenerowania kolejnego tokena dostępu, gdy pierwszy wygaśnie.

Od tej pory będziesz używać tokena dostępu w nagłówku autoryzacji w następujący sposób:

Authorizaton: Bearer {{access_token}}

Praca z plikami i folderami

Pamiętaj, aby używać ważnego tokena dostępu w każdym żądaniu.

Foldery

Możesz wymienić foldery za pomocą prostej odpowiedzi GET.
Aby wylistować podfoldery w standardowym folderze dokumentów Sharepoint, użyj:

GET https://{{tenant}}/_api/web/GetFolderByServerRelativeUrl(’/Shared Documents’)

Pliki do notowania

Aby wylistować pliki, użyj podobnego URI punktu końcowego zakończonego na files.

GET https://{{tenant}}/_api/web/GetFolderByServerRelativeUrl(’/Shared Documents’)/Files

Tworzenie folderu

Aby utworzyć folder należy POST do punktu końcowego folders:

POST https://{{tenant}}/_api/web/folders

{
  "ServerRelativeUrl": "/Shared Documents/NewFolder1"
}

Wysyłanie pliku

Aby przesłać plik, używasz parametrów punktu końcowego do określenia ścieżki folderu i nazwy pliku, ponieważ ciało żądania będzie zawierało sam plik.

POST https://{{tenant}}/_api/web/GetFolderByServerRelativeUrl(’/Shared Documents/NewFolder1′)/Files/add(url=’a.txt’,overwrite=true)

Postman

Możesz użyć Postmana do wystawienia żądania. Wszystkie adresy URL i ciała są w formacie Postman, aby użyć ich ze zmiennymi.

WSO2 Sharepoint connector

Możesz również użyć WSO2 Sharepoint connector

https://docs.wso2.com/display/ESBCONNECTORS/SharePoint+Connector

Linki

https://docs.microsoft.com/en-us/sharepoint/dev/sp-add-ins/authorization-code-oauth-flow-for-sharepoint-add-ins

https://docs.microsoft.com/en-us/sharepoint/dev/sp-add-ins/working-with-folders-and-files-with-rest

https://docs.microsoft.com/en-us/sharepoint/dev/sp-add-ins/authorization-code-oauth-flow-for-sharepoint-add-ins#permission-scope-aliases-and-the-oauthauthorizeaspx-page

Potrzebujesz pomocy?

Potrzebujesz zapisać pliki do Sharepointa i nie wiesz od czego zacząć?

Nie martw się, jesteśmy tu, aby pomóc. Napisz do nas, a my skontaktujemy się z Tobą tak szybko, jak tylko będziemy mogli!

Jak przesłać pliki do Sharepointa z WSO2 – kompletny przewodnik
Przewiń na górę