脚本宝典收集整理的这篇文章主要介绍了无法使用PHP连接到OAuth 2.0,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我做了什么
>使用GOOGLE DeveloPErs Console制作项目.
>将Analytics API更改为ON.
>创建了一个服务帐户.
>为服务器和浏览器应用程序生成的API密钥(不知道确切地使用哪个和哪里使用).
>下载用于PHP的Google Api客户端库.
>上传了我创建服务帐户时下载的.p12密钥,将其上传到我的网站并链接到google-api-PHP-client-master / examples / service-account.PHP.
>在google-api-PHP-client-master / examples / service-account.PHP中声明了我的服务帐户客户端ID.
目前的代码
<?PHP /* * Copyright 2013 Google Inc. * * Licensed under the apache License,Version 2.0 (the "License"); * you may not use this file except in compliance wITh the License. * You may oBTain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing,Software * distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,either exPress or implied. * See the License for the specific language governing permissions and * limitations under the License. */ session_start(); include_once "templates/base.PHP"; /************************************************ Make an API request authenticated with a service account. ************************************************/ set_include_path("../src/" . PATH_SEPARATOR . get_include_path()); require_once 'Google/Client.PHP'; require_once 'Google/Service/Books.PHP'; /************************************************ ATTENTION: Fill in these values! You can get them by creating a new Service Account in the API console. Be sure to Store the key file somewhere you can get to it - though in real operations you'd want to make sure it wasn't accessible From the webserver! The name is the email address value PRovided as part of the service account (not your address!) Make sure the Books API is enabled on this account as well,or the call will fail. ************************************************/ $client_id = 'SECRET-NUMBERS.apps.googleusercontent.COM'; $service_account_name = ''; $key_file_location = 'SOMENUMBERS-privatekey.p12'; echo pageHeader("Service Account Access"); if ($client_id == 'SECRET-NUMBERS.apps.googleusercontent.com' || !strlen($service_account_name) || !strlen($key_file_location)) { echo missingServiceAccountDetailsWarning(); } $client = new Google_Client(); $client->setApplicationName("Client_Library_Examples"); $service = new Google_Service_Books($client); /************************************************ If we have an access token,we can carry on. Otherwise,we'll get one with the help of an assertion credential. In other examples the list of scopes was managed by the Client,but here we have to list them manually. We also supply the service account ************************************************/ if (isset($_SESSION['service_token'])) { $client->setAccessToken($_SESSION['service_token']); } $key = file_get_contents($key_file_location); $cred = new Google_Auth_AssertionCredentials( $service_account_name,array('https://www.googleapis.com/auth/analytics.readonly'),$key ); $client->setAssertionCredentials($cred); if($client->getAuth()->isAccessTokenExpired()) { $client->getAuth()->refreshTokenWithAssertion($cred); } $_SESSION['service_token'] = $client->getAccessToken(); /************************************************ We're just going to make the same call as in the simple query as an example. ************************************************/ $optParams = array('filter' => 'free-ebooks'); $results = $service->volumes->listVolumes('Henry David Thoreau',$optParams); echo "<h3>Results Of Call:</h3>"; foreach ($results as $item) { echo $item['volumeInfo']['title'],"<br /> \n"; } echo pageFooter(__FILE__);
问题
>在google-api-PHP-client-master / examples / service-account.PHP中有这段代码,我不太明白:
$service_account_name =”;
>当我完成上述所有操作并在我的网站上加载google-api-PHP-client-master / examples / service-account.PHP页面时,我收到以下两个错误:
我做错了什么?
1046123799103-nk421gjc2v8MLr2qnmmqaak04ntb1dbp@developer.gserviceaccount.com
登录您的GA,转到您希望服务帐户访问的帐户的管理部分.您需要在帐户级别为该电子邮件帐户提供访问权限,只需向他们提供阅读和分析即可.
<?PHP session_start(); require_once 'Google/Client.PHP'; require_once 'Google/Service/Analytics.PHP'; // Values from APIs console for your app $client_id = 'Client ID'; $service_account_name = 'Email address'; $key_file_location = 'The file you downloaded'; $client = new Google_Client(); $client->setApplicationName("Client_Library_Examples"); if (isset($_SESSION['service_token'])) { $client->setAccessToken($_SESSION['service_token']); } $key = file_get_contents($key_file_location); $cred = new Google_Auth_AssertionCredentials( $service_account_name,$key ); $client->setAssertionCredentials($cred); if($client->getAuth()->isAccessTokenExpired()) { $client->getAuth()->refreshTokenWithAssertion($cred); } $_SESSION['service_token'] = $client->getAccessToken(); $service = new Google_Service_Analytics($client); $accounts = $service->management_accountSummaries->listManagementAccountSummaries(); foreach ($accounts->getItems() as $item) { echo "Account: ",$item['name']," ",$item['id'],"<br /> \n"; foreach($item->getWebProperties() as $wp) { echo '&nbsp; WebProperty: ',$wp['name'],$wp['id'],"<br /> \n"; $views = $wp->getProfiles(); if (!is_null($views)) { foreach($wp->getProfiles() as $view) { // echo ' View: ',$view['name'],$view['id'],"<br /> \n"; } } } }
以上是脚本宝典为你收集整理的无法使用PHP连接到OAuth 2.0全部内容,希望文章能够帮你解决无法使用PHP连接到OAuth 2.0所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。