用戶在我的android應用程序中授權。我正在將用戶令牌和其他信息發送到我的服務器。在這個服務器上,我想爲用戶實現一些邏輯。如何在服務器上訪問用戶的日曆信息?
我想正好有this flow。
我按照步驟 quickstart.php in this link獲取用戶的日曆在服務器上。
,但我得到以下錯誤:
google oauth exception' with message 'could not json decode the token'
爲此,我試過this solution。 但我採取相同的錯誤。所以作爲第三個選項,我自己創建了json格式,如下面的this solution。
$access_token = '{
"access_token":'.$access_token.',
"token_type":"Bearer",
"expires_in":3600,
"id_token":'.$id_token.',
"refresh_token":" ",
"created":'. time() .'
}';
如你所見我不知道如何交換刷新令牌。我搜索瞭如何獲得刷新令牌,並看到了this question。並執行this solution我的代碼,但沒有改變。
編輯4:我試圖在Android應用程序獲取訪問令牌according to this answer並將其發送到應用程序服務器。我走的代碼之前,我做的事:
GoogleSignInAccount acct = result.getSignInAccount();
code = acct.getServerAuthCode();//sending this code to AsyncTask to get access token
我的函數來獲得訪問令牌:
private void getAccessToken()throws GoogleAuthException, IOException{
new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... params) {
List<String> scopes = new LinkedList<String>();
scopes.add("https://www.googleapis.com/auth/calendar");
scopes.add("https://www.googleapis.com/auth/calendar.readonly");
scopes.add("https://www.googleapis.com/auth/urlshortener");
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(transport, jsonFactory, client_id, client_secret, scopes).build();
try{
GoogleTokenResponse res = flow.newTokenRequest(code).execute();
accessToken = res.getAccessToken();
}catch(IOException e){
}
在PHP的服務器端,我改變user-example.php文件點點以下,因爲我有現在訪問令牌:
$client = new Google_Client();
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setAccessType("offline");
$client->setRedirectUri($redirect_uri);
$client->addScope("https://www.googleapis.com/auth/urlshortener");
$service = new Google_Service_Urlshortener($client);
if (isset($_REQUEST['logout'])) {
unset($_SESSION['access_token']);
}
$client->setAccessToken('{"access_token":"'. $access_token .'","token_type":"Bearer","expires_in":3600,"created":'. time() .'}');
if ($client->getAccessToken() && isset($_GET['url'])) {
$url = new Google_Service_Urlshortener_Url();
$url->longUrl = $_GET['url'];
$short = $service->url->insert($url);
$_SESSION['access_token'] = $client->getAccessToken();
但現在我發現了以下錯誤:
Fatal error: Uncaught exception 'Google_Service_Exception' with message 'Error calling POST https://www.googleapis.com/urlshortener/v1/url : (403) Insufficient Permission' in C:\wamp\www\google-php\src\Google\Http\REST.php on line 110
單引號中的變量不會被評估。打開變量的字符串。 '$ sp ='嗨,我是'。$ name'。我寫字符串';' –
我仍然採取相同的json解碼錯誤。 :\ – melomg
如果這兩個標記不是整數,則將它們放入雙引號中。 –