Phân tích Google API Lỗi 403: Người dùng không có bất kỳ tài khoản Google Analytics nào


147

Tôi đang tạo tập lệnh, dựa trên hướng dẫn từng bước của Google Analytics từ trang này:

https://developers.google.com/analytics/resource/tutorials/hello-analytics-api

Việc ủy ​​quyền được thực hiện mà không gặp vấn đề gì, cho đến khi nó cố gắng truy cập dữ liệu. Mã trả về là 403 và thông báo lỗi là:

Người dùng không có bất kỳ tài khoản Google Analytics nào

Thông báo này không có ý nghĩa: tài khoản của tôi có dữ liệu phân tích google, theo dõi nhiều trang web và tôi có thể truy cập nó từ trình duyệt web mà không gặp vấn đề gì. Tôi đã cho phép API Analytics thông qua bảng điều khiển API của Google và quyền truy cập API đang cung cấp cho tôi dữ liệu phù hợp.

Câu trả lời:


302

Tôi cũng có vấn đề này. Tôi đã sửa nó bằng cách thêm địa chỉ email cho tài khoản dịch vụ của tôi vào hồ sơ Google Analytics mà tôi muốn nó truy cập.

Tôi đã nhận được địa chỉ email (một cái gì đó như xxxxxx@developer.gserviceaccount.com) cho tài khoản dịch vụ bằng cách xem trong tab "Truy cập API" trong bảng điều khiển Google API.

Sau đó, tôi đã làm theo hướng dẫn của Google để thêm địa chỉ email vào hồ sơ Analytics . Bây giờ mọi thứ đang hoạt động như mong đợi.

Chúc may mắn!


8
Đây là câu trả lời tốt nhất, tôi đã thử nó và nó hoạt động như bùa mê !! Cảm ơn rất nhiều @Sebastian!
mongotop

1
nếu bạn có nhiều hồ sơ trong tài khoản của mình và bạn muốn truy cập dữ liệu của họ bằng API GA, bạn nên tiếp tục thêm xxxxx@developer.gserviceaccount.com vào hồ sơ Analytics hoặc có cách hiệu quả hơn mà không cần cách thủ công. Cảm ơn!
mongotop

2
@mongotop bạn được chào đón! Thật không may, tôi không biết một cách hiệu quả hơn để làm điều này - hãy cho chúng tôi biết trong các nhận xét nếu bạn tìm thấy.
SM

1
Nếu bạn thêm người dùng ở cấp Thuộc tính, hãy đảm bảo thêm nó vào chế độ xem phù hợp, vì Giao diện người dùng Analytics đôi khi gây hiểu lầm
tacone

1
Bạn là một huyền thoại, tôi đã dành cả ngày để cố gắng thiết lập điều này.
dspacejs 7/07/2015

80

Chỉ cần thêm bạn đã cho email (định dạng 71667655853644-o653rrdkq5hthsgo0otbpojoo@developer.gserviceaccount.com)

để người quản lý người dùng:

Người dùng không có bất kỳ tài khoản Google Analytics nào

Chúc nó giúp bạn


2
Đáng buồn là lỗi không biến mất. Tin nhắn tĩnh: GAPI: Không thể yêu cầu dữ liệu tài khoản. Lỗi: "{" lỗi ": {" lỗi ": [{" tên miền ":" toàn cầu "," lý do ":" không đủPermissions "," tin nhắn ":" Người dùng không có bất kỳ tài khoản Google Analytics nào. "}]," mã ": 403," tin nhắn ":" Người dùng không có bất kỳ tài khoản Google Analytics nào. "}}"
JosFabre

1
@Lev hơn 3 năm câu trả lời này vẫn còn hiệu lực. Tôi chỉ hy vọng Google cải thiện nó, nhưng không. Nó đã được thực hiện một cách hoàn hảo: D
itnikolay

28

Tôi đã phải đối mặt với cùng một vấn đề. Nó đã được giải quyết bằng cách thêm id email của người dùng tài khoản dịch vụ ( your account@yourwebsite-dev.iam.gserviceaccount.com), vào người dùng trong tài khoản Analytics của bạn trong-

Analytics - Trang chủ -> Quản trị viên (khung bên trái) -> Quản lý người dùng -> thêm (nhấp vào dấu cộng ở bên phải của menu) -> Thêm người dùng mới -> Thêm id email vào địa chỉ email.

nhập mô tả hình ảnh ở đây

Bây giờ, điều này sẽ giải quyết vấn đề.


1
Tại sao câu trả lời này không được chấp nhận? Tôi dành 2 ngày cố gắng để tìm hiểu lý do tại sao làm theo hướng dẫn dẫn đến lỗi này.
Ragnar

8

Nó được đề cập trong một nhận xét ở trên nhưng nếu bạn thêm địa chỉ email trong phần Quản lý người dùng cho tài khoản của mình thì nó sẽ không hoạt động. Bạn phải bấm vào Quản lý người dùng dưới phần xem của màn hình.

nhập mô tả hình ảnh ở đây


Tôi biết đã nhiều năm trôi qua, nhưng bây giờ tôi đã thêm địa chỉ vào tài khoản và có vẻ như nó hoạt động tốt.
Peter

tôi không thể thấy User Managementliên kết dưới phần Xem trên phần cuối của mình
aldrien.h

4

Bạn cũng sẽ gặp lỗi này nếu bạn chưa bao giờ đăng nhập bằng tài khoản google mà bạn đang cố xác thực.


6
Tôi sẽ chỉ để lại ở đây: Liên kết với giao diện web Google Analytics
naXa

Và mật khẩu cho email ở đâu? Tôi cố gắng mật khẩu mà chương trình google tôi trước khi tải đuôi .p12 giấy chứng nhận nhưng nó không phải là hợp lệ
ymakux

2

Tôi đã gặp lỗi 403 cho đến khi tôi thay đổi quyền của tài khoản email từ bên trong Google Analytics từ 'Đọc & Phân tích' sang một thứ khác, lưu nó và sau đó thay đổi quyền trở lại thành 'Đọc & Phân tích' và nó đã hoạt động.


Điều này đã giúp. Tôi đã tạo một "Tài khoản dịch vụ" mới trong API & Xác thực / Thông tin xác thực; và lưu cặp khóa .p12. Sau đó, tôi đã đi vào bảng điều khiển quản lý người dùng Analytics và thêm địa chỉ email của Người dùng dịch vụ. Ủy quyền .p12 sử dụng API PHP hoạt động, nhưng chỉ khi tôi kiểm tra "Đọc & Phân tích" chỉ trong danh sách quyền.
Johnny O

2

Chỉ trong trường hợp nếu điều đó không hoạt động, hãy thử mở tệp JSON mà bạn đã tải xuống và Tìm kiếm client_emailvà sao chép địa chỉ email đó và thêm nó vào Xem tệp

Bấm vào

Analytics-Home Page ->Admin(left pane) -> User Management -> add (click on plus sign on right side of the menu) -> Add new User -> Add the client_email address which you copied.

Nếu vẫn không được

Analytics-Homepage-> Admin ->Views->User Management(Click on add(+) symbol, add this ccopied client_email address and give permissions and save it.

2

Thông báo này chúng tôi nhận được khi không có sự cho phép nào client_email, trong phần phân tích của google , client_emaillà bạn nhận được từ tệp JSON . để cấp quyền cho client_emailbạn đang sử dụng trong Ứng dụng của mình, hãy truy cập trang web Google Analytics và nhấp vào "Quản trị viên (biểu tượng cài đặt)"

nhập mô tả hình ảnh ở đây

bạn sẽ nhận được danh sách menu ngay, nhấp vào "Xem quản lý người dùng"

nhập mô tả hình ảnh ở đây

Ở đó bạn sẽ thấy biểu tượng "+" và "thêm người dùng",

nhập mô tả hình ảnh ở đây

Một khi bạn nhấp vào đó, bạn cần thêm client_emailvào "trường địa chỉ email" và lưu nó, bạn sẽ thấy ổn!

nhập mô tả hình ảnh ở đây


1

Tôi đã gặp lỗi 403. Những bước này đã đưa tôi xung quanh nó. Để rõ ràng, tôi đã cố gắng để mẫu "HelloAnalytics.php" của Google hoạt động với OAuth (tương tác người dùng, phù hợp với công việc định kỳ, v.v.).

Sau khi bật API Analytics, tôi đã tạo một "Tài khoản dịch vụ" mới trong API & Xác thực / Thông tin xác thực; và lưu cặp khóa .p12. Sau đó, tôi đã đi vào bảng điều khiển quản lý người dùng Analytics và thêm địa chỉ email của Người dùng dịch vụ đó.

đuôi .p12 phép sử dụng API PHP hoạt động nếu tôi đánh dấu chỉ "Đọc & phân tích" duy nhất trong danh sách cho phép. Nếu tôi thêm "Quản lý người dùng" và / hoặc "Chỉnh sửa", tôi sẽ nhận được 403. Hy vọng điều này hữu ích, tôi đã nghiền ngẫm điều này trong vài giờ ...



0

Tôi cũng gặp vấn đề này và tôi thấy rằng vấn đề là tôi đã yêu cầu quá nhiều quyền. Bảng điều khiển dành cho nhà phát triển nói để yêu cầu cả hai http://www.googleapis.com/auth/analytics http://www.googleapis.com/auth/analytics.readonly quyền. Điều này đã không hoạt động khi tôi cũng đang sử dụng subyêu cầu. Một subtuyên bố chỉ thị của Google để phát hành một access token mà hoạt động trên danh nghĩa của một người dùng khác - trong trường hợp của tôi tài khoản Google sở hữu tài khoản dịch vụ. Tôi đã xóa analyticsquyền và bị mắc kẹt với analytics.readonlyyêu cầu phụ:

{
  "iss":"123123123123123-xxxxxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com",
  "sub":"me.example@gmail.com"
  "scope":"http://www.googleapis.com/auth/analytics",
  ...
}

Mã thông báo Bearer được phát hành cho phép tôi thực hiện (ít nhất một số) truy vấn Google Analytics cho các hồ sơ được sở hữu bởi các tài khoản Google hoàn toàn khác nhau, nhưng đã được chia sẻ (chỉ đọc) với người dùng gmail của tôi (me.example@gmail.com) .


1
Sub là gì khi tôi đang sử dụng SDK khách của Google Analytics?
Dejell

Tôi muốn điều này làm việc! Tôi đang gặp phải lỗi sau khi tôi thử thực hiện tương tự: Google_Auth_Exception [401]: Lỗi làm mới mã thông báo OAuth2, thông báo: '{"error": "trái phép_client", "error_descrip": "Máy khách trái phép hoặc phạm vi trong yêu cầu." } '
SEoF

Tôi đề nghị bạn giữ nó. Chúng tôi vẫn sử dụng điều này để lấy dữ liệu thời gian thực từ GA cứ sau vài phút, tất cả đều sử dụng bash, không hơn không kém!
mogsie

0

Tôi đã cố gắng khắc phục điều này bằng cách đảm bảo rằng

khách hàng = Google :: APIClient.new (: application_name => 'X' ,: application_version => '1')

biến tên ứng dụng 'X ở trên là tên TÀI KHOẢN trên bảng điều khiển GA, không phải tên TÀI SẢN, mà trong trường hợp của tôi là url thực tế của trang web tôi muốn truy cập.

Nhầm lẫn, nhưng rất may đã được sửa (không có cảm ơn Google!)


Tôi đang cố gắng tìm 'X' này. Bạn có thể gửi ảnh chụp màn hình?
Dejell

0

Vấn đề xảy ra vì chúng tôi không cung cấp đối số "phụ". Trừ khi chúng tôi cung cấp điều này, cuộc gọi xảy ra thay mặt cho email tài khoản dịch vụ dài đó.

Vì vậy, chỉ cần cung cấp một đối số phụ, với một email mà bạn đã có quyền truy cập trong báo cáo và mọi thứ sẽ hoạt động tốt!


0

Tôi đã gặp lỗi tương tự, vì tôi đã không đăng nhập vào Google Analytics. Vì vậy, tôi đã giải quyết nó bằng cách đăng nhập vào tài khoản phân tích.


0

Thay vì sử dụng tài khoản dịch vụ, bạn có thể bỏ qua nhu cầu thêm quyền người dùng mới (theo câu trả lời hàng đầu trong chuỗi này) bằng cách sử dụng OAuth client IDthông tin đăng nhập.

Chuyển đến bảng điều khiển thông tin đăng nhập API và nhấp vào "Tạo thông tin đăng nhập" -> "ID khách OAuth". Sau đó, bạn sẽ nhận được ID khách hàng và bí mật khách hàng mà bạn sẽ cần để xác thực API.

Bây giờ bạn có thể sử dụng OAuth2WebServerFlowđể xác thực trên cơ sở mỗi lần sử dụng. Đây là một ví dụ python3:

from apiclient.discovery import build
from oauth2client.client import OAuth2WebServerFlow

# TODO: Fill these in...
CLIENT_ID = ''
CLIENT_SECRET = ''
VIEW_ID = ''

flow = OAuth2WebServerFlow(
    CLIENT_ID, CLIENT_SECRET,
    'https://www.googleapis.com/auth/analytics.readonly',
    redirect_uri='urn:ietf:wg:oauth:2.0:oob'
)

authorize_url = flow.step1_get_authorize_url()
print('Receive code from:\n%s\n' % authorize_url)
code = input('Enter code here:').strip()
credentials = flow.step2_exchange(code)

api = build('analyticsreporting', 'v4', credentials=credentials)
body={
    'reportRequests': [{
        'viewId': VIEW_ID,
        'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}],
        'metrics': [{'expression': 'ga:sessions'}],
        'dimensions': [{'name': 'ga:country'}]
    }]
}

data = api.reports().batchGet(body=body).execute()
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.