Hallo allemaal,

Ik heb eindelijk alles af.
Nu vroeg ik mij eigenlijk het volgende af, wat ik ook niet zo kan vinden in dit forum.
Is er iemand die het gelukt is om via php een bestand te uploaden richting sharepoint op een vrij simpele manier?
Je komt via google erg ingewikkelde methodes tegen en die geven je nog geen duidelijk beeld.

Vroeg mij af of dit iemand al eens geprobeerd heeft of het gelukt is.
Dat zou je gewoon normaal op je scherm moeten krijgen dan, tenzij je wat fout doet.
[php]var_dump[/php]
Daar had ik net even gekeken om te zien wat je precies bedoelde :)


try {
    $ctx = ClientContext::connectWithUserCredentials($settings['Url'], $settings['UserName'], $settings['Password']);
     var_dump($ctx);
    //$ctx = ClientContext::connectWithClientCredentials($Settings['Url'], $Settings['ClientId'], $Settings['ClientSecret']);
    $site = $ctx->getSite();
    $ctx->load($site); //load site settings
    $ctx->executeQuery();
    print $site->getUrl();

}
catch (Exception $e) {
	echo 'Authentication failed: ',  $e->getMessage(), "\n";
}
En wat komt daar uit?
Lekker duidelijk inderdaad!
Je was mij voor dus nu even opnieuw proberen :)
Ik heb die setting verwijzing in de code weg gehaald en manueel alles ingevuld van link en username en password en nu krijg ik dit te zien.:

object(Office365\SharePoint\ClientContext)#8 (8) { ["site":"Office365\SharePoint\ClientContext":private]=> NULL ["web":"Office365\SharePoint\ClientContext":private]=> NULL ["contextWebInformation":"Office365\SharePoint\ClientContext":private]=> NULL ["pendingRequest":"Office365\SharePoint\ClientContext":private]=> NULL ["serviceRootUrl":"Office365\Runtime\ClientRuntimeContext":private]=> string(50) "https://qcpbv.sharepoint.com/sites/Logboeken/_api/" ["version":"Office365\Runtime\ClientRuntimeContext":private]=> string(4) "v1.0" ["authContext":"Office365\Runtime\ClientRuntimeContext":private]=> object(Office365\Runtime\Auth\AuthenticationContext)#3 (2) { ["provider":"Office365\Runtime\Auth\AuthenticationContext":private]=> object(Office365\Runtime\Auth\SamlTokenProvider)#2 (5) { ["usingFederatedSTS":protected]=> bool(false) ["authorityUrl":protected]=> string(44) "https://qcpbv.sharepoint.com/sites/Logboeken" ["FedAuth":"Office365\Runtime\Auth\SamlTokenProvider":private]=> string(924) "77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48U1A+VjgsMGguZnxtZW1iZXJzaGlwfDEwMDMyMDAwYzUzMTJjYjlAbGl2ZS5jb20sMCMuZnxtZW1iZXJzaGlwfHJwaXNlcnZlckBxY3BvbHltZXJzLmNvbSwxMzIzODg4MjI4MjAwMDAwMDAsMTMyMzU2NDczNzEwMDAwMDAwLDEzMjM4OTY4NjgzMTk5NjMyNCwwLjAuMC4wLDIsY2VlMmQ5MTMtNDE3YS00ODM0LWI5Y2YtMTBjNDJhNmQwZjY4LCwsNjljNTY0OWYtMTBlNy0yMDAwLTI5OTctMDUyZTdhYTlhZGQ1LDY5YzU2NDlmLTEwZTctMjAwMC0yOTk3LTA1MmU3YWE5YWRkNSwsMCwwLDAsLCwsMjY1MDQ2Nzc0Mzk5OTk5OTk5OSwwLCxsek1wSlNQVngwZ0hQSS8vNTE5cm45c0JzcElQdFRXZ2xoNjlWa3ZIZmJvckdxRFhzaE00dW5zaEhTMk5uWVNQYUY5OXJYV3pKd0ZSdVlPa0dwUGVKMmVvSldCeXAySmM2VVQvbisxSktXUGhxUHhaaVJsMk9CTWovQWZYNFN2L1VSUVovOGliZEltSFBMc014VVVzaGNNQmpibEt0aVBsaG9DYktQYUppWlRidVRzbXBXNVJWWjJsY0tac3NsNFZMYlU0cnZlTGg3SUdpQmthUndnVGw3UmtrcW5GYWIwQWxDdTNkOXN3ejFCTVVpb3FkWFZPbWtYTE4wWlYyZmdMOHU2ZnNwdWZpZnI3eUFTUkNyYytDRUplRlQ0OFhmMzBlVHJ1eENnRDJiM1pZaWY5cWdzUVNEQ1pvakc1NXBPNUpndE0yV2d5cEhWL05LVmJ1TFlTQmc9PTwvU1A+" ["rtFa":"Office365\Runtime\Auth\SamlTokenProvider":private]=> string(440) "ZY2TE+Bs7W5tVn7XX8qpqzQNpKGFtTGAz3kizTAOVMEmQ0VFMkQ5MTMtNDE3QS00ODM0LUI5Q0YtMTBDNDJBNkQwRjY4GR8CHJuEzWVEOQ9aH+DHsGKt6QLOxuB393BpPqlZu7zoltrcSvvceTHxdiMsEXNuE2M3Wd8Eev17E7asNIQ5JMNpUn/LJZCYsKsx2pl/s/S5DpBk+N9N7nIdCBCyzeR/Z+yuzA4Q5oGdKHvd/6g/+ENr8h/Lx/on/iZhL4BXDuwc02KxosgQjzcbR38wOYCCjim/3pXw9IV5+6mf+rL4BgfvaQu7kZQiaymQaPF9Op68vFGVv/jgMeVJNw7INKsQvukdHg+ugenNIoLJ8EqEP7jc5lQGTwPAz/ffJ765aH83D+5Fp+W0zpuc+uKyqVP+20MVW6qCEwx4tlZDjGemIEUAAAA=" ["SPOIDCRL":"Office365\Runtime\Auth\SamlTokenProvider":private]=> NULL } ["authorityUrl":"Office365\Runtime\Auth\AuthenticationContext":private]=> string(44) "https://qcpbv.sharepoint.com/sites/Logboeken" } ["RequestSchemaVersion"]=> NULL } https://qcpbv.sharepoint.com/sites/Logboeken


weet nu niet of dat die var toont of dat het dien link is wat hij zou moeten printen, maar het is tenminste al iets :)
Ik ben niet bekend met Sharepoint, maar ik zie toch iets van een token over de lijn gaan. Dus er lijkt wel iets te gebeuren. Je kan even goed verder debuggen met var_dump op de daaropvolgende variabelen.

Als je volgende keer weer een var_dump hier plaatst, gooi er wat enter in zodat we niet lang hoeven te scrollen ;).
Zal ik doen, blijkt dus toch dat die var die grote tekst laat zien want haal ik die weg krijg ik een link te zien wat ook volgens die print zou moeten komen.
Denk alleen dat die catch niet correct is want als ik het wachtwoord verander zou volgens de code Authentication failed moeten komen maar dan krijg ik weer error 500 fout.

[size=xsmall]Toevoeging op 10/07/2020 22:00:03:[/size]

Gevonden, even opgezocht bij php7.: On PHP >= 7, most fatal errors are reported not by raising an error, but by throwing an Error object.
Furthermore, both Error and Exception classes implement the Throwable interface, so you could catching that directly:

Dus heb ik het nu zo werkend.:

try {
    $ctx = ClientContext::connectWithUserCredentials('https://xxxxx.sharepoint.com/sites/xxxxx', 'xxxxxx', 'xxxxxxx');
    // var_dump($ctx);
    //$ctx = ClientContext::connectWithClientCredentials($Settings['Url'], $Settings['ClientId'], $Settings['ClientSecret']);
    $site = $ctx->getSite();
    $ctx->load($site); //load site settings
    $ctx->executeQuery();
    print $site->getUrl();

}
catch (\Throwable $e) {
	echo 'Authentication failed: ',  $e->getMessage(), "\n";
}


Nu is inloggen enz werkend, tenminste de Autorisatie.
Op naar proberen een bestand te downloaden, zal dit in deze topic verder aanhouden met eventuele vragen of problemen.
Mja, een niet-gevangen exception resulteert altijd in een Fatal Error.

De "$e" die je probeerde te vangen was dan blijkbaar niet van de klasse Exception, of een klasse die daarvan is afgeleid. Maar om nu terug te vallen op Throwable is volgens mij niet heel erg netjes.

Je zou voor de gein eens kunnen kijken van welke klasse $e is met behulp van get_class() en dan eens kijken of dat niet netter geprogrammeerd kan worden (door het indienen van een ticket ofzo).

EDIT: te meer omdat hun eigen example dus blijkbaar niet (meer) werkt.
Aangezien er meer mensen zijn, die wellicht hiervan gebruik willen maken.
Na lang spitten op internet heb ik een betere oplossing gevonden, namelijk RClone.
Hiermee kun je in principe alles doen op meer als 20 verschillende drives zoals Google drive, sharepoint, onedrive en meer.

Reageren