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ę.
- Go to register new application (Settings / add application): https://{{tenant}}/_layouts/15/appregnew.aspx
- 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).
- 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/[email protected]","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/working-with-folders-and-files-with-rest
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!