2016-08-09 23 views
9

Tôi đang cố gắng tạo chế độ xem lịch cho công ty của mình để hiển thị những nhân viên nào có sẵn. Tôi đã tạo một ứng dụng trong Azure, tôi có thể đăng nhập vào hệ thống, tôi nhận được một mã thông báo truy cập, nhưng tôi không thể nhận được thông tin.Office 365 api trong PHP

tôi xây dựng địa chỉ yêu cầu sử dụng curl và gửi tiêu đề này với yêu cầu của tôi

array(6) { 
[0]=> 
    string(28) "User-Agent: php-tutorial/1.0" 
    [1]=> 
    string(588) "Authorization: Bearer ~ACCESS_TOKEN~" 
    [2]=> 
    string(24) "Accept: application/json" 
    [3]=> 
    string(55) "client-request-id: ~GUID~" 
    [4]=> 
    string(30) "return-client-request-id: true" 
    [5]=> 
    string(45) "X-AnchorMailbox: ~MAIL~" 
} 

Và tất cả tôi nhận được là một câu trả lời là: ""

Tôi đang làm gì sai?

CẬP NHẬT

Sau khi đăng nhập, Microsoft không hỏi nếu tôi muốn cấp quyền truy cập vào các ứng dụng, nhưng nó cấp cho tôi một thẻ truy cập. Đây có phải là vấn đề không? Và làm thế nào tôi có thể yêu cầu sự cho phép?

UPDATE 2

Sau khi đăng nhập và cố gắng để có được thông tin, tôi nhận được một lỗi 401 nói: Truy cập bị từ chối. Đó là lạ Tôi nghĩ rằng nó đã được cấp cho tôi một mã thông báo truy cập.

CẬP NHẬT 3

ngày Couple hơn nữa và tôi đã thử một số ví dụ và hướng dẫn mã để kiểm tra xem nó hoạt động. Nhưng ngay cả trong các ứng dụng này, api dường như không hoạt động. Đây là những dự án tôi đã thử.

https://github.com/microsoftgraph/php-connect-rest-sample

https://dev.outlook.com/restapi/tutorial/php

+0

API nào bạn đang sử dụng? –

+0

Tôi đã thử các API khác nhau: openid, mail.read, calendars.read, contacts.read.Nhưng điều kỳ lạ là, khi tôi đăng nhập nó không yêu cầu permisson – apero

+0

Xin chào, apero, bạn đã cố gắng tận dụng https://graph.microsoft.io/en-us/graph-explorer# để kiểm tra các API, để kiểm tra xem vấn đề quyền của nó có phải không? –

Trả lời

6

Theo danh sách lỗi tại https://graph.microsoft.io/en-us/docs/overview/errors, khi bạn nhận được lỗi 401, nó có nghĩa là

thông tin xác thực bắt buộc là hoặc thiếu hoặc không hợp lệ cho tài nguyên.

Có thể mã thông báo truy cập của bạn không chứa phạm vi cho tài nguyên mà ứng dụng của bạn yêu cầu. Ví dụ.

Nếu bạn muốn liệt kê các tài nguyên của xem lịch, và theo các tài liệu tại https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/user_list_calendarview:

Một trong những phạm vi sau đây được yêu cầu phải thực hiện API này: Calendars.Read; Calendars.ReadWrite

Hãy đăng nhập cổng thông tin của ứng dụng AD Azure, hãy kiểm tra các điều khoản Have full access to user calendars hoặc Read user calendars của Microsoft Graph dù đã được đánh dấu.

Và bạn có thể kiểm tra phần "phạm vi" của nội dung phản hồi bằng mã thông báo truy cập của bạn, hãy tham khảo https://azure.microsoft.com/en-us/documentation/articles/active-directory-protocols-oauth-code/#use-the-authorization-code-to-request-an-access-token để biết thêm thông tin.

+0

Xin lỗi vì phản ứng muộn này cũng không giúp tôi: (vui lòng xem câu hỏi cập nhật của tôi – apero

+0

Bạn có thành công trong chức năng curl không? bất cứ điều gì với '$ error = curl_error ($ ch);'? Và bạn có ý nghĩa gì không hoạt động? Bạn có nhận được thông tin nào không? –

+0

Có chức năng curl là thành công, tôi không nhận được lỗi. thông tin đó là điều rất khó hiểu – apero

Các vấn đề liên quan