Office365-rest-python-client: Tidak dapat terhubung ke Sharepoint (mengambil token dari kesalahan XML)

Dibuat pada 10 Jun 2020  ·  13Komentar  ·  Sumber: vgrem/Office365-REST-Python-Client

Selamat pagi,

Saya telah mencoba selama berhari-hari untuk terhubung dengan akun Sharepoint perusahaan saya tetapi saya tidak dapat melakukannya.

Saya telah mencoba pendekatan yang dijelaskan dalam deskripsi pypi

nama pengguna = ' [email protected] '
kata sandi = 'XXXX'
url = ' https://aXXX.sharepoint.com '

_ctx_auth = AuthenticationContext(url)
jika ctx_auth.acquire_token_for_user(nama pengguna, kata sandi):
ctx = ClientContext(url, ctx_auth)
web = ctx.web
ctx.load(web)
ctx.execute_query()
cetak "Judul web: {0}".format(web.properties['Judul'])

lain:
cetak ctx_auth.get_last_error()_

Juga yang diberikan setelah rilis versi 2.1.8

ctx = ClientContext.connect_with_credentials(site_url, UserCredential(nama pengguna, kata sandi))

tapi saya selalu mendapatkan kesalahan yang sama:

_Terjadi kesalahan saat mengambil token dari respons XML: AADSTS500069: Elemen dengan ID 'XXXX' tidak ditandatangani atau tanda tangannya tidak valid.
Terjadi kesalahan saat mengambil cookie auth dari https://XXX.sharepoint.com/_vti_bin/idcrl.svc_

Ini menghentikan saya untuk melanjutkan proyek saya ...

Adakah yang bisa memberi tahu saya mengapa kesalahan ini terjadi dan bagaimana cara memperbaikinya?

Terima kasih sebelumnya.

question

Semua 13 komentar

Salam pembuka!

Anehnya kesalahan ini tidak terdaftar di antara kode kesalahan Azure AD STS

Untuk menentukannya, bisakah Anda menjelaskan pertanyaan-pertanyaan berikut:

Opsi lainnya adalah beralih dari aliran kredensial pengguna ke aliran prinsipal aplikasi.

Lihat artikel ini tentang cara mendaftarkan prinsipal aplikasi dan memberikan akses melalui alur _SharePoint App-Only_

Berikut ini contohnya:

ctx = ClientContext.connect_with_credentials(site_url, ClientCredential(client_id,client_secret))

target_web = ctx.web
ctx.load(target_web)
ctx.execute_query() 

Selamat siang

Terima kasih atas jawaban cepat dan bantuan Anda.

Saya menggunakan akun perusahaan dengan format berikut [email protected]

Saya telah bertanya kepada TI di perusahaan saya dan mereka memberi tahu saya bahwa akun saya tidak memiliki otentikasi Multi-faktor yang aktif, Meskipun ada beberapa akun dengan pengaktifan Multi-faktor

Saya juga telah meminta kredensial prinsipal aplikasi tetapi sayangnya saya tidak memiliki izin untuk mengaturnya sendiri sehingga saya harus menunggu mereka melakukannya.

Mengenai izin utama aplikasi, dalam artikel yang disediakan, akses FullControl disetujui per tenant , meskipun dalam kebanyakan kasus cakupan site collection lebih dari cukup, berikut adalah manifes xml untuk itu :

<AppPermissionRequests AllowAppOnlyPolicy="true">
  <AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl" />
</AppPermissionRequests>

Url halaman kumpulan situs: https://contoso.sharepoint.com/_layouts/15/appinv.aspx

Catatan: dapat dikonfigurasi baik oleh administrator kumpulan situs atau administrator penyewa

Selamat siang,

Saya memiliki informasi lebih lanjut tentang kesalahan tersebut.

Saya telah mencoba terhubung dengan pengguna layanan TI dan saya mendapatkan kesalahan ini

Tidak bisa mendapatkan token keamanan biner dari https://login.microsoftonline.com/extSTS.srfTraceback (panggilan terakhir terakhir):File "c:/Users/pablo.arias/Desktop/GD/Conexion_sharepoint.py", baris 13, di






Nama pengguna adalah ALSSVSHNGSDES jika itu memberi Anda beberapa informasi

Di sisi lain, saya telah mencoba untuk membuat dan mengakses melalui SharePoint App-Only tetapi saya tidak tahu cara mengarsipkan dengan benar Domain APP filds dan Redirect URI, saya telah mencoba untuk mengatur alamat sharepoint saya di keduanya tetapi selalu memberi saya kesalahan jadi saya kira itu bukan informasi yang benar.

Terima kasih sebelumnya.

Selamat malam,

tentang

tapi saya tidak tahu cara mengarsipkan APP Domain dan Redirect URI dengan benar, saya telah mencoba mengatur alamat SharePoint saya di keduanya tetapi selalu memberi saya kesalahan jadi saya rasa itu bukan informasi yang benar.

kesalahan mungkin terjadi karena nilai yang ditentukan untuk App Domain dan Redirect URI , silakan lihat instruksi di bawah ini untuk detail lebih lanjut.

Berikut adalah instruksi untuk membuat kredensial berbasis aplikasi:

  1. Masuk ke halaman appregnew.aspx di penyewa SharePoint Online Anda. Misalnya, https://example.sharepoint.com/_layouts/15/appregnew.aspx .
  2. Pada halaman ini, klik tombol Hasilkan di sebelah bidang ID Klien dan
  3. Simpan ID klien dan rahasia klien dengan aman karena kredensial ini dapat digunakan untuk membaca atau memperbarui semua data di lingkungan SharePoint Online Anda. Anda juga akan menggunakannya untuk mengonfigurasi koneksi SharePoint Online di aplikasi.
  4. Di bawah Judul , tentukan judul. Misalnya, Python console . Di bawah App Domain , tentukan www.localhost.com . Di bawah Redirect URI , tentukan https://www.localhost.com .

Catatan: Terkadang, jika Anda menentukan domain yang sebenarnya, misalnya domain sharepoint.com di bidang App Domain dan Redirect URI , alih-alih localhost , pesan kesalahan An unexpected error has occurred mungkin muncul. Periksa halaman appregnew.aspx dan pastikan kedua bidang menyertakan URI localhost yang tepat.

  1. Klik Buat .

  2. Buka halaman appinv.aspx di kumpulan situs. Misalnya, https://example.sharepoint.com/_layouts/15/appinv.aspx untuk memberikan izin _site-scoped_.

Catatan: Jika Anda lebih suka memberikan izin pada tingkat penyewa, kunjungi situs administrasi penyewa, URL harus menyertakan -admin untuk mengakses situs administrasi penyewa, misalnya, https://example-admin.sharepoint.com/_layouts/15/appinv.aspx Operasi itu memerlukan izin administrator penyewa

  1. Tentukan ID klien Anda di bidang Id Aplikasi dan klik Cari untuk menemukan aplikasi Anda.
    Untuk memberikan izin ke aplikasi, salin XML di bawah ini ke bidang XML permintaan izin Aplikasi:
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl" />
</AppPermissionRequests>

Catatan: Untuk cakupan tingkat penyewa , XML permintaan izin terlihat sebagai berikut:

<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" />
</AppPermissionRequests>

Jika Anda melihat pesan kesalahan Sorry, only tenant administrators can add or give access to this app" and the Trust It button is disabled, you are not on the correct page for the tenant administration site. Check the appinv.aspx page URL and make sure it includes -admin.

  1. Klik Buat .
  2. Pada dialog konfirmasi, klik Trust It untuk memberikan izin.

Sebagai bukti konsep, berikut adalah contoh menjalankan skrip berikut di Notebook Jupiter

client_id = "--client id goes here--"
client_secret = "-- secret goes here--"
site_url = "https://example.sharepoint.com/"

from office365.runtime.auth.ClientCredential import ClientCredential
from office365.sharepoint.client_context import ClientContext


ctx = ClientContext.connect_with_credentials(site_url, ClientCredential(client_id, client_secret))
web = ctx.web
ctx.load(web)
ctx.execute_query()

Hasil

image

Selamat pagi,

Saya sudah mencoba mengatur API mengikuti instruksi tetapi saya tidak bisa.

Ketika saya menetapkan Domain APP sebagai www.localhost.com dan Redirect URI sebagai https://www.localhost.com, saya menerima kesalahan berikut: Domain APP Tidak Valid.

Saya Melampirkan tangkapan layar dari upaya terakhir saya.

image

Bisakah Anda memberi tahu saya apa yang saya lakukan salah?

Saya kira untuk menempatkan "localhost" sebagai Domain Aplikasi adalah sebuah contoh dan itu bukan URI yang tepat untuk Sharepoint tetapi pada titik ini saya benar-benar bingung tentang apa yang harus dimasukkan ke dalam bidang "Domain aplikasi" dan "Redirect URI".

Banyak terima kasih sebelumnya!

Selamat pagi,

bagaimana dengan localhost bukannya www.localhost.com ?

Saya kira itu sudah diselesaikan jadi tutup yang ini.

Selamat siang

Maaf saya tidak menjawab sebelumnya.
Saya mengalami masalah dengan izin,

Saya pikir itu terjadi karena mereka tidak memberikan API akses penuh dalam permintaan izin XML.

Saya mengalami kesalahan berikut saat melakukan permintaan (maaf dalam bahasa Spanyol):

office365.runtime.client_request_exception.ClientRequestException: ('-2147024891, System.UnauthorizedAccessException', 'Acceso denegado. Tidak ada tieneel permiso necesario para realizar esta acción o tener acceso a este recurso.', '403 Client Error: Forbidden for url

Jadi saya kira kode itu berfungsi dengan benar.

Terima kasih untuk bantuannya.

Itu benar, langkah 6-9 juga wajib untuk memberikan izin.

Selamat siang

Akhirnya kami mengubah XML dan berfungsi

ctx = ClientContext.connect_with_credentials(site_url, ClientCredential(client_id, client_secret))
web = ctx.web
ctx.load(web)
ctx.execute_query()
print("Judul situs web: {0}".format(web.properties['Judul']))

>
Judul situs web: NEGOCIO

Terima kasih banyak atas semua bantuan Anda.

@ pobs93 Saya mencoba melakukan hal yang sama. Saya mengubah izin saya. tetapi mendapatkan kesalahan yang sama seperti Anda -2147024891, System.UnauthorizedAccessException', 'Access ditolak. Anda tidak memiliki izin untuk melakukan tindakan ini atau mengakses sumber daya ini.', '403 Client Error: Forbidden for url:
perubahan apa yang Anda lakukan pada XML izin Anda? dapatkah Anda memberi tahu saya bahwa ini sangat penting untuk proyek saya. Terima kasih sebelumnya

apakah Anda mengubah izin XML? apakah Anda mengubah cakupan di sini untuk mencerminkan URL perusahaan Anda atau mempertahankannya apa adanya. ?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat