2015-06-13 13 views
5

Tôi đang cố gắng Truy cập API để nhận thông tin trên http://github.com. Tôi tạo ra trong ứng dụng trong github (trong ứng dụng phát triển) cho URL này và cố gắng truy cập thông qua R bằng cách sử dụng các thư viện httr. Sau đây là mãmã ủy quyền cho Github API được sử dụng trong R

library(httr) 
oauth_endpoints("github") 
myapp <- oauth_app("github",key = "#####################",secret = "########################") 

(chìa khóa đã được thay thế bằng id khách hàng và bí mật đã được thay thế bằng id secred)

github_token <- oauth2.0_token(oauth_endpoints("github"), myapp) 

này nhắc tôi sau

Sử dụng một tập tin cục bộ nhớ cache OAuth truy cập thông tin xác thực giữa các phiên R? 1: Có 2: Không

tôi chọn 2 (như tôi đã cố gắng lựa chọn 1 trước đó) rồi sau đây được hiển thị

httpuv not installed, defaulting to out-of-band authentication 
Please point your browser to the following url: 

    https://github.com/login/oauth/authorize?client_id=72939e1b6d499f4f1894&scope=&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code 

Nhập mã uỷ quyền Bất kỳ một thể cho tôi biết những gì mã uỷ quyền được?

Trả lời

8

Mã ủy quyền là mã mà github cung cấp sau khi một điệu nhảy OAuth 2.0 'đúng' (sử dụng thuật ngữ Hadley Wickham). Cách dễ nhất để làm điều này là sử dụng httpuv (install.packages("httpuv")). Với cài đặt đó, máy chủ web cục bộ được thiết lập trên cổng 1410 và miễn là bạn đã thiết lập ứng dụng github của mình một cách thích hợp (với chuyển hướng đến http://localhost:1410).

Nếu bạn chưa cài đặt httpuv, thì chức năng OAuth 2.0 của httr mặc định không được ủy quyền. Điều này yêu cầu GitHub chuyển hướng đến urn: ietf: wg: oauth: 2.0: oob & response_type = cod sẽ hiển thị mã ủy quyền trong trình duyệt để nó có thể được sao chép và dán. Tuy nhiên, bạn gần như chắc chắn đã thiết lập một thứ gì đó khác với URL chuyển hướng của bạn và do đó github phàn nàn rằng có URI chuyển hướng không khớp. Tôi không chắc liệu github có thể được cấu hình để cho phép chuyển hướng oob (nhưng tôi đã thử và dường như không).

Lý do duy nhất không sử dụng httpuv là nếu bạn đang sử dụng R trên máy không cho phép bạn thiết lập máy chủ trên cổng 1410 hoặc nếu bạn đang sử dụng R trên máy từ xa qua RStudio Server hoặc phiên SSH . Trong trường hợp sau, máy chủ web sẽ được thiết lập trên máy từ xa, nhưng trình duyệt của bạn sẽ cố gắng kết nối với cổng 1410 trên máy cục bộ của bạn. Bạn có khả năng có thể nhận được xung quanh điều này bằng cách làm cổng chuyển tiếp SSH từ cổng 1410 trên máy cục bộ của bạn đến cổng 1410 trên máy từ xa. Lưu ý rằng mã demo tại https://github.com/hadley/httr/blob/master/demo/oauth2-github.r không giống như phiên bản CRAN hiện tại của bản demo oauth2-github bao gồm bí mật cho ứng dụng của Hadley, do đó bạn có thể chạy demo như trước đây mà không cần thiết lập ứng dụng của riêng bạn.

+0

Đối với github cụ thể, việc sử dụng mã thông báo truy cập cá nhân và http auth thông thường sẽ dễ dàng hơn nhiều. – hadley

+0

Hi Nick, thx cho sự giúp đỡ của bạn tôi mới vào web, web API vv .. tuy nhiên tôi giả định vấn đề là với thiết lập máy chủ web địa phương trên 1410. Tôi không biết tôi phải thiết lập nó. theo bình luận của bạn tôi đã cài đặt gói httpuv. Tôi giả sử nó thiết lập máy chủ web trên địa phương của tôi. Tuy nhiên tôi đã cố gắng để google trên làm thế nào để kiểm tra máy chủ web đã được thiết lập nhưng có thể tìm thấy trả lời.Tuy nhiên tôi đã có thể truy cập API cho github.com Thx –

1

Đây là những gì làm việc cho tôi:

Cài đặt gói HTTPUV từ https://github.com/rstudio/httpuv

Và có lẽ thiết \\R\library phép của bạn cho người dùng hiện cho DevTools chạy :: install_github ("rstudio/httpuv") `

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