2014-10-24 2 views
1

**이 해결 **Google+에 PHP API 오류

내가 코드 점화와 함께 작동하도록 Google+의 PHP API를 얻을 수있는 방법, 단지 작동하지 않습니다 autoload.php 또는 클라이언트라고합니다. 나는 어딘가에 Google 애플 리케이션이 '$ this'를 사용하여 클래스를 참조 할 때 충돌이 있다고 생각하지만 존재하지 않는 코드 점화 클래스를 호출하는 것을 끝냅니다.

라이브러리를 사용하여 통합을 시도했지만 클라이언트가 작동하도록 할 수는 있지만 작동하려면 Google_HttpRequest가 필요합니다.

Fatal error: Uncaught exception 'Google_Auth_Exception' with message 'Error fetching OAuth2 access token, message: 'invalid_request'' in /home/my_name/public_html/google-api-php-client-master/src/Google/Auth/OAuth2.php:120

스택 추적 :

0 /home/my_name/public_html/google-api-php-client-master/src/Google/Client.php(120): Google_Auth_OAuth2->authenticate('4/zfxGdy7q1VhTj...') 1 /home/my_name/public_html/application/models/login_model.php(37): Google_Client->authenticate('4/zfxGdy7q1VhTj...') 2 /home/my_name/public_html/application/controllers/Store.php(3916): Login_model->google_validate() 3 [internal function]: Store->google_login() 4 /home/my_name/public_html/system/core/CodeIgniter.php(359): call_user_func_array(Array, Array) 5 /home/my_name/public_html/index.php(223): require_once('/home/nemesisfo...') 6 {main} thrown in /home/my_name/public_html/google-api-php-client-master/src/Google/Auth/OAuth2.phpon line 120

여기

내가 일반적으로 시도하고 심지어

require_once getcwd().'/google-api-php-client-master/autoload.php'; 
    $client = new Google_Client(); 
    $client->setApplicationName('app_name'); 
    $client->setClientId('my_client_id'); 
    $client->setClientSecret('my_client_secret'); 
    $client->setDeveloperKey('my_developer_key'); 
    $client->authenticate($auth_code); 
    $access_token = $client->getAccessToken(); 

    echo $access_token; 

를 작동하지 않고 이것이 내가 얻을 오류가 무엇인가 그래서 어떤 생각?

+0

당신과 충돌하지한다 '$를이'는 그 범위를 유지해야한다. 질문 ->이 코드는 어디에 두는가? 제어 장치? 도서관? –

+0

내 로그인 모델에서, 그것은 ajax를 사용하여 다시 값을 반환합니다. 결과를 자바 스크립트로 출력합니다. – Wes

+0

답변을 해결책으로 게시하고 동의하십시오. –

답변

2

나는 마침내 그것을 알아 냈다. 분명히 아무 것도 없어서 내가해야 할 일이 무엇인지 알려주지 않았다.

다음을 추가하는 것이 매우 중요합니다. $ client-> setRedirectUri ('postmessage');

또한 라이브러리처럼 코드 점화 장치에 구현할 필요가 없습니다. 평소처럼 설정할 수 있습니다.

//We need to load the Google api library 
    require_once getcwd().'/google-api-php-client-master/autoload.php'; 
    $client = new Google_Client(); 
    $client->setApplicationName('app name'); 
    $client->setClientId('your client id'); 
    $client->setClientSecret('your client secret'); 
    $client->setDeveloperKey('its actaully just the API key under key for server apps'); 
    $client->setRedirectUri('postmessage'); //DONT FORGET IT, its the same redirecturi set on the javascript side for one time code flow apps 

    //Now to get the access token by exchanging the one time code 
    $client->authenticate($auth_code); 
    $token = json_decode($client->getAccessToken()); 
    // Verify the token 
    $reqUrl = 'https://www.googleapis.com/oauth2/v1/tokeninfo?access_token='.$token->access_token; 
    $req = new Google_Http_Request($reqUrl); 

    $tokenInfo = json_decode($client->getAuth()->authenticatedRequest($req)->getResponseBody()); 


    print_r($tokenInfo); 

또한 다른 지체 것은 하나의 타임 코드 흐름, 그들은 실제로 잘

$tokenInfo = json_decode($client::getIo()->authenticatedRequest($req)->getResponseBody()); 

을 위해이 문서에 있습니다

그래서 결국이 모든 것을이 필요했다입니다 그게 내게 적어도 일할 수 있어야합니다.

$tokenInfo = json_decode($client->getAuth()->authenticatedRequest($req)->getResponseBody()); 

또한 Go 클래스의 이름을 바꿔야했습니다. Request.php의 ogle_HttpRequest가 Google_Http_Request 클래스에 속합니다. autoload.php가 작동하기 때문에 "_"로 이름을 나눕니다.

은 그럼 그냥 그렇게처럼 전화 :

$req = new Google_Http_Request($reqUrl); 
관련 문제