2015-09-29 24 views
6

Tôi đang phát triển một ứng dụng cửa sổ phổ quát (Windows 10), nơi tôi có ứng dụng "Hai lớp": Trên thiết bị IoT (ví dụ: Raspberry Pi 2) nội dung, nhưng trên tất cả các Thiết bị khác (PC, Notebook, Điện thoại thông minh, v.v.), bạn có một cái gì đó giống như bộ điều khiển cho dữ liệu được hiển thị.Nhận mã thông báo làm mới từ Windows Live SDK trong Universal Windows App

Một trong những tính năng tôi muốn nhận ra là Đăng nhập Windows Live trong phần Bộ điều khiển để nhận thông tin lịch trong phần Hiển thị-IoT. Cho rằng tôi cung cấp cho người dùng cơ hội để đăng nhập với Windows Live như hình dưới đây:

LiveAuthClient auth = new LiveAuthClient(); 
LiveLoginResult loginResult = await auth.LoginAsync(new string[] { "wl.signin", "wl.calendars", "wl.offline_access" }); 
if (loginResult.Status == LiveConnectSessionStatus.Connected) 
{ 
    //Save the AccessToken from loginResult.Session.AccessToken 
    TokenHandler.Save(loginResult.Session.AccessToken); //AccessToken is quite accessable right here 
    //But as far as I know I should save the RefreshToken, but the Session has no field for it 
} 

Vì vậy proplem của tôi là, mà tôi không có được một trường từ LiveConnectSession nơi RefreshToken thể được lưu trữ, nhưng tất cả các bài viết tôi đọc đang nói, rằng tôi chỉ cần thêm wl.offline_access vào phạm vi để nhận được một RefreshToken.

Tôi không quen thuộc với OAuth2.0 và SDK/API đang xây dựng trên OAuth, vì vậy ai đó biết gì, điều tôi đang làm sai hoặc cách tôi phải xử lý?

Tôi thực sự biết ơn vì tất cả các câu trả lời có ý nghĩa và hữu ích!

PS: Tôi đang sử dụng Live SDK 5.6 và không phải là onedrive API mới, bởi vì nó không có quyền truy cập vào Lịch Thông tin

+0

Không ai có ý tưởng? –

+0

Nếu bạn xem [nguồn của liveSdk] (https://github.com/liveservices/LiveSDK-for-Windows), thì bạn sẽ thấy rằng trên hầu hết các yêu cầu thực thi, phương thức 'RefreshTokenIfNeeded()' là gọi là. Vì vậy, tôi nghĩ rằng mã thông báo làm mới không được hiển thị, vì nó được xử lý tự động. – Romasz

+0

Tôi đã cài đặt Live SDK 5.6.3 từ gói nuget, và có loginResult.Session có thuộc tính RefreshToken, vì vậy không chắc chắn bạn sử dụng cái gì khi không có thuộc tính như vậy. – Evk

Trả lời

2

wl.offline_access

trong trường hợp này nó nói về ủy quyền người dùng và cho phép ứng dụng được phép của người dùng hoạt động khi họ không có mặt (khi người dùng ngoại tuyến, thay vì máy tính/thiết bị).
Điều này không có nghĩa là ứng dụng sẽ đăng nhập người dùng khi hệ thống ngoại tuyến nhưng sẽ yêu cầu người dùng cho phép ứng dụng hoạt động khi người dùng không có mặt.
Thậm chí tôi đã sử dụng SDK trực tiếp để tìm nạp dữ liệu người dùng trong một trong các dự án trước đó của tôi và cho lịch đã phải sử dụng Office365. Bây giờ bạn thậm chí có thể sử dụng Outlook API Mặc dù chúng tôi nhận được Mã thông báo truy cập bằng cách sử dụng loginResult.Session.AccessToken nhưng tôi không nghĩ rằng refreshToken được tạo cho ứng dụng WinRT.

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