2011年9月16日 星期五

Google+ API 與 php

image

如果你沒有用過 Facebook API,那建議你可以先閱讀底下的文章釐清一些觀念

透過 Facebook API,讓你的 Facebook Application 發佈動態消息

 

Google+ API 已經可以使用囉!但目前只開放讀取部分資訊。

image

 

其實照著 Google+ 的文件進行就可以了,大概分幾個步驟:

 

這裡註冊你的 Google Application,註冊方式可以參考這裡

 

特別要注意的是,如果你用的是 php 的 Library,這個步驟結束之後…

 

要記得把 Redirect URI 改成這樣(實際上還是得以你放置的路徑為主,這個例子,我是將 index.php 放置在 www root 底下)

image

 

這裡可以看到等會需要輸入的資訊(黃色框住的部分)

image

 

這裡打開你的 Google+ API。

image 

 

這裡下載你使用的語言的 Library,這個範例是用 php 完成的(但 Ruby 的部分,我也測試過)

image

 

接著把 google-plus-php-client.zip 跟 google-plus-php-starter.zip 解壓縮到 Apache Web 的根目錄下。

SNAGHTML1efe26c

 

打開 index.php 填寫剛剛申請獲得的資訊。

image

 

打開 localhost 就完成囉!

SNAGHTML1fb85bc

 

如果操作過程中,出現了

CURL Error 60: SSL certificate problem, verify that the CA cert is OK.
Details: error:14090086:SSL routines
SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

的錯誤,可以參考底下這個網站解決!

http://richardwarrender.com/2007/05/the-secret-to-curl-in-php-on-windows/

14 則留言:

  1. 失敗...........
    連個名字都撈不出來

    回覆刪除
  2. Hi 安德,

    可否描述一下操作過程,說不定我可以幫得上忙

    回覆刪除
  3. good man

    我想請問..為什麼按下connect "允許存取"之後會直接跳
    " Internet Explorer 無法顯示網頁 " 整個無解~~~
    原本使用chrome瀏覽會跳107 ssl但是改成用ie就直接跳無法顯示網頁了..
    麻煩大大解惑

    回覆刪除
    回覆
    1. Hi Wei Lai,

      我猜想是SSL的相關設定沒有設置好,導致異常喔!我google了一下,你可以試試看到底下網址試著修改看看
      http://lunarforest.blogspot.com/2010/09/google107-neterrsslprotocolerror-ssl.html

      再確定一下 443 port (https) 是否有被防火牆擋住。

      刪除
  4. Good Man大大 感謝解答~

    不過現在在外面所以要回學校才能夠測試了,現在在家裡用opera是ok的:) 但是google的RedirectUri是不是只能用在網站的首頁,如果我把它放到其他的資料夾,在google api那邊設定會變成不合法的因而無法使用

    回覆刪除
    回覆
    1. Redirect URIs 指的是你提供給 Google 的 Callback 頁面,是可以自己決定的,不一定要在首頁。

      在我們自己的網站上,卻希望可以存取使用者 Google 的資訊,而又不可能叫使用者將 Google 的帳號密碼傳給我們,因此便有了 OAuth 的驗證法。而在這個驗證法中,我們必須提供 Callback 頁面讓 Google 知道如何將使用者的瀏覽器導回到我們的網站。

      如果我們處理 OAuth 的相關程式碼放在 www/a/b/c/index.php,那麼填寫 Redirect URIs 時便要填 http://localhost/a/b/c/,只要是一致的就可以。

      你可以試試看,有問題再問我=)

      刪除
  5. 謝謝 :)
    恩恩!
    但是我如果把網址設成 http://localhost/http/googleOAuth/ 有資料夾的話
    PostMessage Origin "http://localhost/http/googleOAuth/" is invalid.
    不讓我設定.. 不過如果只單純http://localhost/這段的話它會讓我使用 ~"~

    回覆刪除
    回覆
    1. 你是到 Google APIs Console 裡面設定 Redirect URIs 為 http://localhost/http/googleOAuth/ 嗎?然後 Server 也有相對應的資料夾路徑?

      如果是的話,我直覺想到的是,你網址裡面有敏感關鍵字[http],試著改掉看看?

      刪除
  6. 對 是在 google apis console裡面設定 redirect url
    現在功能都ok了 謝謝 :)但是就是路徑不能多後面那串資料夾..後面只要多資料夾他就會說 is invalid. 不給設定>< 之前在用其他社群網站的callback都沒問題....唯獨google (殘念 大大的設其他資料夾是ok的嗎??

    回覆刪除
  7. 不好意思大大這幾天給你添麻煩了 :)
    感謝耐心的幫助~~

    問題解決了!!

    這邊是把Authorized Redirect URIs 跟 Authorized JavaScript Origins 設定不一樣,Authorized Redirect URIs 可以指定到資料夾的php檔(http://localhost/google/example.php)但是Authorized JavaScript Origins似乎只能指定到root((http://localhost/)

    不好意思 一直打錯東西 所以刪了兩則
    謝謝!! Good Man :D

    回覆刪除
    回覆
    1. 不用謝=)

      你的經驗與回覆也是讓之後來看的人,多了些資訊可以幫助他們找到問題,希望以後還有機會交流~

      刪除
  8. good man 大大
    又有問題想請教...
    不過這次跟上面的沒什麼關係

    用php把oauth整個驗證跑完然後取得token跟token_secret
    有試過嗎?? 不曉得有沒有資源可以讓我學習 因為感覺現在在做東西完全是靠library跟example在做只要他有少做錯一個流程我就不知道該怎麼去解決了

    回覆刪除
  9. 請問我要寫一個自動分享的功能,不知google+ API是否有提供這一個功能?

    回覆刪除