origin khi bạn tạo liên kết, mở url được trả về
trong một cửa sổ bật lên, và lắng nghe. Không cần gì khác, và không có gì thay đổi với các liên
kết được tạo mà không có origin — chúng hành xử đúng như trước nay.
Đang dùng widget nhúng? Điều này đã được nối dây sẵn cho
bạn. Script nhận các sự kiện này và chuyển chúng cho
connect.on("success", …) với tiền tố
connect: được lược bỏ — không cần viết message listener, không cần kiểm tra origin, không
cần poll popup.closed. Trang này là giao thức truyền tải bên dưới, và là thứ bạn xây dựng dựa
trên khi bạn sở hữu cửa sổ: chế độ trực tiếp, hoặc một cửa sổ bật lên bạn tự mở.Các sự kiện chỉ được gửi đến đúng
origin bạn đặt trên liên kết, và chỉ đến cửa sổ đã mở cửa sổ
bật lên. Dù vậy hãy luôn kiểm tra event.origin trong listener của bạn: bất kỳ trang nào cũng
có thể gửi một message đến cửa sổ của bạn, và origin là phần duy nhất của một message không thể
bị giả mạo.Các Sự kiện
Mỗi message được gửi đến trang của bạn là một object có dạng{ source: "ayrshare", version: 1, event, ... }, và mang network bất cứ khi nào sự kiện liên
quan đến một mạng. Hai sự kiện thì không: một connect:closed từ trang liên kết được lưu trữ, nơi
nó có nghĩa là người dùng của bạn đã nhấn Done chứ không phải là một kết nối đã kết thúc, và
connect:ready của widget (xem bên dưới). Các kết cục mà mã của chính bạn tổng hợp — một cửa sổ
bật lên bị chặn, hoặc một cửa sổ người dùng của bạn đã đóng — không đến từ chúng tôi và chỉ mang
những gì bạn đưa cho chúng.
Widget nhúng khác biệt ở một sự kiện.
ready của nó thông báo
rằng một slot đã sẵn sàng chứ không nói gì về một mạng, nên nó không mang network — trong khi
ready của cửa sổ bật lên nêu tên mạng mà nó được mở cho. Nếu bạn xử lý cả hai bề mặt từ một
listener, hãy đọc network một cách phòng thủ trên ready.Widget cũng thêm một reason cho cancelled mà bề mặt này không bao giờ gửi: superseded, khi
một lệnh gọi popup() thứ hai thay thế một lần thử vẫn đang diễn ra. Ở đây chỉ có một cửa sổ và
một kết cục, nên không có gì để thay thế.
Đúng một trong
connect:success, connect:error hoặc connect:cancelled đến cho mỗi lần kết
nối. connect:closed không phải một trong số đó — nó đến sau, để cho bạn biết cửa sổ bật lên đã
đóng một cách có chủ đích.
connect:success chỉ được gửi sau khi tài khoản đã được lưu, nên một
GET /user ngay sau nó đã hiển thị tài khoản được kết nối.
Cửa sổ bật lên giữ nguyên mở sau
connect:error để người dùng của bạn có thể đọc điều gì đã sai.
Nó tự đóng sau connect:success và connect:cancelled. Thêm &autoClose=false vào URL để giữ
nó mở trong mọi trường hợp trong khi bạn đang gỡ lỗi.Lắng nghe
Hai điều đoạn mã này làm mà dễ bị bỏ sót. Nó kiểm traevent.origin, và nó theo dõi một cửa sổ
bật lên mà người dùng của bạn tự tay đóng — một cửa sổ đã đóng không thể gửi gì cả, nên polling là
cách duy nhất để nhận ra.
Lỗi
connect:error mang cùng các mã như phần còn lại của API, nên một mã bạn thấy ở đây có nghĩa đúng
như nó có nghĩa ở mọi nơi khác. Mã dành riêng cho bề mặt này:
Bất cứ thứ gì khác là thất bại của chính mạng xã hội, được báo cáo với mã mà thất bại đó vốn có —
ví dụ
322 cho một vấn đề ủy quyền Instagram, bao gồm cả một tài khoản vẫn là Personal thay vì
Professional.
Một liên kết đã chết đến theo cách khác
Một liên kết đã hết hạn, bị thu hồi hoặc không tồn tại bị từ chối trước khi trang có thể biết nơi gửi sự kiện, nên nó không thể gửi sự kiện nào. Người dùng của bạn thấy lý do và mã của nó trên màn hình, và trang của bạn nghe đượcconnect:cancelled khi họ đóng cửa sổ.
Để phân biệt chúng, hãy poll Lấy một Link Session: nó báo cáo
expired và revoked một cách xác thực, và trả về 502 cho một liên kết không tồn tại.
Nếu Bạn Không Muốn Quản lý Cửa sổ Bật lên
Hai lựa chọn, và chỉ lựa chọn thứ hai từ bỏ các sự kiện. Để widget sở hữu cửa sổ. Widget nhúng mở và theo dõi nó giúp bạn và giao mọi sự kiện ở trên đến các handler của bạn. Bạn vẫn nhận đượcsuccess ngay khoảnh
khắc một tài khoản được lưu; bạn chỉ không phải viết phần đường ống. Các khung của nó cũng có
nghĩa là hầu hết các mạng không bao giờ mở một cửa sổ bật lên nào cho đến màn hình đăng nhập của
chính mạng xã hội.
Poll thay thế. Nếu một cửa sổ bật lên thực sự không khả dụng — một ứng dụng render phía máy
chủ, hoặc một ứng dụng mobile mở liên kết trong trình duyệt hệ thống — hãy poll
Lấy một Link Session. Nó báo cáo completedAt và
completedNetworks ngay khi một tài khoản được lưu, đó là cùng khoảnh khắc connect:success lẽ
ra sẽ được gửi. Telegram luôn hoàn tất theo cách này, vì nó hoàn tất ngoài luồng mà không có
callback trình duyệt nào cả.