2015-05-27 19 views
10

keresinde SMS metin mesajları göndermek için Google Voice bağlanmak için bir PHP sınıf kitaplığı kullanılır. Çağrı Böyle bir şey çalışacak:Google ses PHP OAuth 2.0

$gv = new GoogleVoice("GmailAccount", "GmailPassword"); 
$gv->sms("PhoneNumber", "TextMsg"); 

Bu yakın zamana kadar sorunsuz çalıştı 4/20/2015 tarihinden itibaren, Google, Google hesabınıza giriş yapmaya eski yöntemlerini desteklediğini durdu. Bu yüzden komutum 500 hatası vererek çalışmayı durdurdu. Google, kimlik doğrulaması yapmak için OAuth 2.0'ı kullanmanız gerektiğini ancak Google Voice ile bunun nasıl gerçekleştirileceğine ilişkin çevrimiçi bir örnek bulamadım. Kodu aşağıda, bunu yazmamıştım, lütfen Google'ın OAuth Sistemini kullanmak için kodu nasıl ayarlayacağımı bildirin.

/* 
Version  0.2 
License  This code is released under the MIT Open Source License. Feel  free to do whatever you want with it. 
Author  [email protected], http://www.lostleon.com/ 
LastUpdate 05/28/2010 


Usage: 


*/ 

class GoogleVoice 
{ 
    public $username; 
    public $password; 
    public $status; 
    private $lastURL; 
    private $login_auth; 
    private $inboxURL = 'https://www.google.com/voice/m/'; 
    private $loginURL = 'https://www.google.com/accounts/ClientLogin'; 
    private $smsURL = 'https://www.google.com/voice/m/sendsms'; 

public function __construct($username, $password) 
{ 
    $this->username = $username; 
    $this->password = $password; 
} 

public function getLoginAuth() 
{ 
    $login_param = "accountType=GOOGLE&Email={$this->username}&Passwd={$this->password}&service=grandcentral&source=com.lostleon.GoogleVoiceTool"; 
    $ch = curl_init($this->loginURL); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20"); 
    curl_setopt($ch, CURLOPT_REFERER, $this->lastURL); 
    curl_setopt($ch, CURLOPT_POST, "application/x-www-form-urlencoded"); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $login_param); 
    $html = curl_exec($ch); 
    $this->lastURL = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); 
    curl_close($ch); 
    $this->login_auth = $this->match('/Auth=([A-z0-9_-]+)/', $html, 1); 
    return $this->login_auth; 
} 

public function get_rnr_se() 
{ 
    $this->getLoginAuth(); 
    $ch = curl_init($this->inboxURL); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $headers = array("Authorization: GoogleLogin auth=".$this->login_auth, 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20'); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    $html = curl_exec($ch); 
    $this->lastURL = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); 
    curl_close($ch); 
    $_rnr_se = $this->match('!<input.*?name="_rnr_se".*?value="(.*?)"!ms', $html, 1); 
    return $_rnr_se; 
} 

public function sms($to_phonenumber, $smstxt) 
{ 
    $_rnr_se = $this->get_rnr_se(); 
    $sms_param = "id=&c=&number=".urlencode($to_phonenumber)."&smstext=".urlencode($smstxt)."&_rnr_se=".urlencode($_rnr_se); 
    $ch = curl_init($this->smsURL); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $headers = array("Authorization: GoogleLogin auth=".$this->login_auth, 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20'); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($ch, CURLOPT_REFERER, $this->lastURL); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $sms_param);  
    $this->status = curl_exec($ch); 
    $this->lastURL = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); 
    curl_close($ch); 
    return $this->status; 
} 

private function match($regex, $str, $out_ary = 0) 
{ 
    return preg_match($regex, $str, $match) == 1 ? $match[$out_ary] : false; 
} 
} 
+0

anahtarı, kullanıcı adı ve şifre şeyler kaldırmak. – DaImTo

+0

Oauth2'ye geçmek kadar basit görünmüyor. Googlevoice için bir API bulunamıyor (Oath2 kullanırken "kapsam" değişkeni tarafından gerekli). Ek öneri memnuniyetle karşılanır. –

cevap

5

sonraki cevaba gönderecek: artık bunu kullanamaz böylece https://stackoverflow.com/a/4131915/2992810

talihsiz google sesli onların API değişmişti. https://github.com/aaronpk/Google-Voice-PHP-API (baş taraftaki yorumlara bakın)

Google Voice açık bir API değildir, bu nedenle bakımları yoktur. size ancak kendi tecrübelerime bugün SMS Hizmetleri aslında Google ve onların sürekli API değişiklikleri ile mücadele daha hizmet lisansı satın almak için size daha az mal olacak, böylece ucuz üzere Maalesef web sitenizin her zaman bu değişim sonucu aşağı gidebilir. Zamanınızı bir kaynak olarak düşünür, zamanınızı harcayarak size daha fazla mal olur!

0

GV4J Google Voice giriş yapabiliyor bir Java kütüphanesi, bu yüzden kimlik doğrulaması edebilmek için PHP kod güncelleme için iyi bir referans olabilir. Oauth2 için