1

我有一個腳本,可以從Facebook的OAuth的API順利獲得:如何在Google腳本中爲應用程序祕密和令牌進行Facebook身份驗證代碼,而無需在腳本中擁有憑據?

function getToken() { 
    var appId = "XXXXXX"; 
    var clientSecret = "XXXXXXXXXXXX"; 
    var url = "https://graph.facebook.com/oauth/access_token?client_id="+appId+"&client_secret="+clientSecret+"&grant_type=client_credentials"; 
    var response = UrlFetchApp.fetch(url); 
    var queryResult = response.getContentText(); 
    var token = queryResult.slice(13); 
    return(token); 
} 

的問題是,我不想讓我的應用標識和clientSecret在我的腳本的身體所以是有辦法,我可以在沒有憑證的情況下對其進行編碼?

+0

應用程序訪問令牌不應該用在客戶端代碼中。如果您需要使用應用程序訪問令牌,那麼您需要在服務器端執行此操作。如果您可以改爲使用用戶訪問令牌,那麼讓用戶先登錄並使用其令牌。 – CBroe

回答

2

手動輸入鍵和祕密到腳本編輯器爲「腳本屬性」(文件>項目屬性>腳本屬性),然後使用Properties Service訪問它們的代碼。

例如,你可以手動添加:

property:APP_ID, value:'XXXXXXXX' 

然後用

var appId = PropertiesService.getScriptProperties().getProperty('APP_ID') 

,如果你想分享像Github上某處的腳本這種技術,或者如果你訪問它的代碼只給出了對腳本的查看訪問權限,在這種情況下,腳本屬性不可見(您應該無法在this script中看到SP)。如果您向其他人授予編輯訪問權限,他們將能夠看到SP,但您可以使用用戶屬性。

+0

謝謝!用戶可以轉到項目屬性 - >腳本屬性來查看它嗎? – turtlepower

+1

是的,他們可以,它沒有不同的安全性。 –

+1

更新了我的答案以添加用例。 –

-2

爲此,您需要安裝最新的facebook SDK,它使用命名空間和受保護的方法來使用圖形API獲取Facebook數據。下面是我工作的一個例子:

require_once ROOT . '/vendor/Facebook/autoload.php'; 
use Facebook\FacebookSession; 
use Facebook\FacebookRedirectLoginHelper; 
use Facebook\FacebookRequest; 
use Facebook\FacebookResponse; 
use Facebook\FacebookSDKException; 
use Facebook\FacebookRequestException; 
use Facebook\FacebookAuthorizationException; 
use Facebook\GraphObject; 
use Facebook\Entities\AccessToken; 
use Facebook\HttpClients\FacebookCurlHttpClient; 
use Facebook\HttpClients\FacebookHttpable; 
class FacebookComponent extends Component 
{ 
    public $app_id; 
    public $app_secret; 
    public $default_graph_version; 

    public function __construct() 
    { 
    $this->app_id = "XXXXXXXXXXXXXXX"; 
    $this->app_secret = "XXXXXXXXXXXXXXXXXXXXX"; 
    $this->default_graph_version = "v2.5"; // For Offerz-develop app 

    } 
    public function getFacebookConn(){ 
    $app_id = $this->app_id; 
    $app_secret = $this->app_secret; 
    $fb = new \Facebook\Facebook([ 
     'app_id' => $app_id, 
     'app_secret' => $app_secret, 
     'default_graph_version' => 'v2.5', 
    ]); 
    return $fb; 

    } 
    } 
+1

你仍然硬編碼的祕密加上使用了錯誤的語言。 –

相關問題