C# 显示OAuth2服务(服务器到服务器)帐户使用情况的任何示例

C# 显示OAuth2服务(服务器到服务器)帐户使用情况的任何示例,c#,oauth-2.0,C#,Oauth 2.0,我看到的所有示例都只支持必须有用户在场的“用户”帐户 看起来最新版本的OAuth2支持用于服务器到服务器身份验证的服务帐户,其中没有人,但我正在努力寻找任何支持它的库或正在使用的实例 我还没有任何通过服务帐户进行授权的C#示例,但是Google API支持服务帐户授权流。下面是一个在Java和Python中使用GoogleBigQueryAPI的授权流的示例,使用这些语言的GoogleAPI客户端库(http://code.google.com/p/google-api-python-clien

我看到的所有示例都只支持必须有用户在场的“用户”帐户

看起来最新版本的OAuth2支持用于服务器到服务器身份验证的服务帐户,其中没有人,但我正在努力寻找任何支持它的库或正在使用的实例

我还没有任何通过服务帐户进行授权的C#示例,但是Google API支持服务帐户授权流。下面是一个在Java和Python中使用GoogleBigQueryAPI的授权流的示例,使用这些语言的GoogleAPI客户端库(http://code.google.com/p/google-api-python-client/ 及)

在Python中实现的相同代码段:

import httplib2

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

# REPLACE WITH YOUR Project ID
PROJECT_ID = 'XXXXXXXXXXX'
# REPLACE WITH THE SERVICE ACCOUNT EMAIL FROM GOOGLE DEV CONSOLE
SERVICE_ACCOUNT_EMAIL = 'XXXXX@developer.gserviceaccount.com'

f = file('key.p12', 'rb')
key = f.read()
f.close()

credentials = SignedJwtAssertionCredentials(
    SERVICE_ACCOUNT_EMAIL,
    key,
    scope='https://www.googleapis.com/auth/bigquery')

http = httplib2.Http()
http = credentials.authorize(http)

service = build('bigquery', 'v2')
datasets = service.datasets()
response = datasets.list(projectId=PROJECT_ID).execute(http)

print('Dataset list:\n')
for dataset in response['datasets']:
  print("%s\n" % dataset['id'])
import httplib2

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

# REPLACE WITH YOUR Project ID
PROJECT_ID = 'XXXXXXXXXXX'
# REPLACE WITH THE SERVICE ACCOUNT EMAIL FROM GOOGLE DEV CONSOLE
SERVICE_ACCOUNT_EMAIL = 'XXXXX@developer.gserviceaccount.com'

f = file('key.p12', 'rb')
key = f.read()
f.close()

credentials = SignedJwtAssertionCredentials(
    SERVICE_ACCOUNT_EMAIL,
    key,
    scope='https://www.googleapis.com/auth/bigquery')

http = httplib2.Http()
http = credentials.authorize(http)

service = build('bigquery', 'v2')
datasets = service.datasets()
response = datasets.list(projectId=PROJECT_ID).execute(http)

print('Dataset list:\n')
for dataset in response['datasets']:
  print("%s\n" % dataset['id'])