2013-04-11 8 views
5

vì vậy tôi đã triển khai google plus đăng nhập vào ứng dụng của tôi ... triển khai của tôi khá chặt chẽ sau ví dụ được đưa ra here. Sự khác biệt lớn nhất giữa tôi và của anh ấy là tôi có một bộ phạm vi lớn hơn mà tôi yêu cầu. khi xây dựng plusclient của tôi xác định phạm vi sau đây:Triển khai Android PlusClient & nhận mã thông báo

"https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.email" 

sau đó xuống dòng trong phương pháp onConnected của tôi cố gắng để có được một accesstoken từ phiên của tôi để vượt qua máy chủ của chúng tôi, nơi chúng tôi làm thịt thực & khoai tây làm việc .

GoogleAuthUtil.getToken(SplashActivity.this, mPlusClient.getAccountName(), "oauth2: https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.email") 

điều này mang lại hiệu quả. YIPPEE! đúng? không. khi chúng tôi thử và sử dụng mã thông báo này có vẻ như nó không được liên kết với ứng dụng của chúng tôi. khi chạy token qua googles tokeninfo endpoint, chúng tôi nhận một cái gì đó dọc theo dòng của

{ 
"issued_to": "608941808256-43vtfndets79kf5hac8ieujto8837660.apps.googleusercontent.com", 
"audience": "608941808256-43vtfndets79kf5hac8ieujto8837660.apps.googleusercontent.com", 
"user_id": "107245641469745809180", 
"scope": "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.email", 
"expires_in": 3577, 
"email": "[email protected]", 
"verified_email": true, 
"access_type": "online" 
} 

rằng issued_to giá trị không phù hợp với bất kỳ khách hàng id của chúng tôi. theo phần cuối của this blog post google không thể khớp yêu cầu mã thông báo này với dự án của chúng tôi. tuy nhiên, trong giao diện điều khiển API của chúng tôi, tôi thực sự có dấu vân tay SHA trong đó cho android và nó thực sự được tách biệt với tên gói bằng dấu chấm phẩy. không có lỗi chính tả. Tôi đã đợi hàng giờ để xem đó có phải là vấn đề tuyên truyền hay không. tôi cũng đã thêm dấu vân tay SHA và không nên tạo clientid cho kho khóa gỡ lỗi của chúng tôi. chúng tôi có cùng một vấn đề cho dù chúng tôi xuất khẩu một apk đã ký ra khỏi nhật thực hoặc nếu chúng tôi chạy nó trực tiếp.

điều này khiến tôi phát điên. tôi không biết phải chuyển sang đâu.

làm ví dụ, khi thực hiện một cuộc gọi đến

googleapis.com/plus/v1/people/me/people/visible?access_token=TOKEN_HERE & maxResults = 100 & pageToken = & alt = json & orderBy = tốt nhất

tôi nhận được

{ 
"error": { 
    "errors": [ 
    { 
    "domain": "usageLimits", 
    "reason": "accessNotConfigured", 
    "message": "Access Not Configured" 
    } 
    ], 
    "code": 403, 
    "message": "Access Not Configured" 
} 
} 

vì google vì lý do gì không liên tưởng rằng mã thông báo với dự án của tôi.

+0

Điều này khiến tôi phát điên. Tôi dường như không thể giải quyết nó. – frostymarvelous

Trả lời

2

cho đến nay, điều này sẽ xảy ra dưới dạng lỗi trong api của google.

nếu tôi lấy phạm vi "https://www.google.com/m8/feeds" thì mọi thứ hoạt động và mã thông báo được liên kết thành công với dự án của chúng tôi. nếu "https://www.google.com/m8/feeds" được bao gồm dưới dạng phạm vi được yêu cầu, mọi thứ sẽ bị hỏng ở phía api mặc dù thực tế là nó nhắc người dùng đúng cách cho quyền cụ thể đó. mặc dù chúng tôi vẫn nhận được mã thông báo khi yêu cầu phạm vi này, mã thông báo không được liên kết với dự án của chúng tôi.

+2

Chỉ dành cho mọi người khác, bạn cần dấu gạch chéo trên URL đó: "https://www.google.com/m8/feeds/ - nó sẽ không khớp với phạm vi mà không có nó và đưa ra lỗi. –

+0

tôi thực sự đánh giá cao sự giúp đỡ của bạn. wow tất cả những gì tôi có thể nói là wow. một dấu gạch chéo còn thiếu. haha. tôi duy trì ý kiến ​​của tôi rằng nó là một lỗi trong api tuy nhiên. khi yêu cầu phạm vi này mà không có dấu gạch chéo, nó sẽ giải quyết và thông báo cho người dùng trong trang quyền đó mà chúng tôi đang yêu cầu quyền này, nhưng mọi thứ sẽ phá vỡ liên kết mã thông báo cho ứng dụng của chúng tôi ... theo cách này, cảm ơn bạn cảm ơn bạn :-) – MrTristan

+0

cũng đủ thú vị ... khi bạn chạy mã thông báo bạn nhận được sau khi sử dụng hoặc không sử dụng dấu gạch chéo thông qua điểm cuối tokeninfo đó, nó thực sự hiển thị phạm vi có và không có dấu gạch chéo trong danh sách phạm vi được liên kết. có lẽ có hai phạm vi m8/nguồn cấp dữ liệu đang giải quyết? – MrTristan

1
String accessToken = GoogleAuthUtil.getToken(getActivity(), plusClient.getAccountName(),  
"oauth2:" + Scopes.PLUS_LOGIN + " " + Scopes.PLUS_PROFILE + " " + MY_SCOPE); 

Mã của tôi hoạt động. Có thể bạn có số lable không cần thiết sau khi "oauth2:"

+0

yea mã hoạt động cho tôi quá ... tôi nhận được một accesstoken .... nó chỉ là mã thông báo truy cập không liên quan đến dự án của chúng tôi. tôi có thể thực hiện cuộc gọi tới "https://www.googleapis.com/oauth2/v1/userinfo?access_token=" nhưng mọi cuộc gọi khác có mã thông báo đó, như tôi đã đề cập ở trên, mang lại 403 – MrTristan

+0

Ohh .. Bạn nên thêm một cuộc gọi khác phạm vi .. –

+0

Tôi đang sử dụng "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth /plus.me https://www.google.com/m8/feeds https: //www.googleapis.com/auth/userinfo.email "như phạm vi của tôi – MrTristan