0

我想插入我的谷歌玻璃帳戶,但我不能這樣做。如何插入帳戶我的谷歌玻璃使用node.js

我如何使用Node.js(v0.10.31),googleapis(v1.0.11版)和護照谷歌-的OAuth(v0.1.5)

當然

,我打開谷歌鏡像APIGoogle Developers Console。並作了pem文件。

這裏是谷歌開發者控制檯設置。 (我試着上傳圖片,但我需要一些的水平。)

pkginfo.oauth.google 

CLIENT ID  670282105???-a???pbnh1pp.apps.googleusercontent.com 
EMAIL ADDRESS [email protected] 
CLIENT SECRET jt0WiP???pCwXT 
REDIRECT URIS http://www.-----------.com:3333/auth/google/callback 
JAVASCRIPT ORIGINS  http://www.-----------.com:3333 
         http://www.-----------.com 
         https://mirror-api-playground.appspot.com 

pkginfo.oauth.glass 

CLIENT ID   67028????qjv.apps.googleusercontent.com 
EMAIL ADDRESS  [email protected] 
PUBLIC KEY 
FINGERPRINTS  e25e3a045????a4e40 – Delete 
        822e7bda????e85c56 – Delete 
        70ae6e7c????45c7c9 – Delete 

這是我的代碼。

passport.use(new GoogleStrategy({ 
    clientID: pkginfo.oauth.google.CLIENT_ID, 
    clientSecret: pkginfo.oauth.google.CLIENT_SECRET, 
    callbackURL: pkginfo.oauth.google.REDIRECT_URL 
    }, 
    function(accessToken, refreshToken, profile, done) { 

    var googleapis = require('googleapis'); 
    var mirror = googleapis.mirror('v1'); 
    var OAuth2 = googleapis.auth.OAuth2; 

    var jwt = new googleapis.auth.JWT(pkginfo.oauth.glass.EMAIL_ADDRESS, 
            pkginfo.oauth.glass.KEY_FILE, 
            null,//'notasecret', 
    ['https://www.googleapis.com/auth/glass.thirdpartyauth'], 
            null); 

    jwt.authorize(function(err, tokens) { 
    if (err) clog.error("Error @jwt.authorize:" + err); 

    var oAuth2Client = new OAuth2(pkginfo.oauth.google.CLIENT_ID, 
            pkginfo.oauth.google.CLIENT_SECRET, 
            'postmessage'); 

    oAuth2Client.setCredentials({ 
     access_token : tokens.access_token 
    }) 

    var params = { 
     auth: oAuth2Client, 
     userToken : accessToken, 
     accountType : "com.cocoa.glasshelpme", 
     accountName : profile.emails[0].value, 
     resource : 
     { 
     features: ["a", "b", "c"], 
     userData: [ 
      {key : "realName" , value : "James jerry"} 
     ], 
     authTokens: [ 
      { type: tokens.token_type, authToken: accessToken } 
     ] 
     } 
    }; 

    mirror.accounts.insert(params, callback); 

    function callback(err,result) { 
     clog.error(err); 
     clog.debug(result); 
    }; 

我得到了這個錯誤信息。

error: { errors: [ { domain: 'global', reason: 'invalid', message: 'Invalid Value' } ], 
    code: 400, 
    message: 'Invalid Value' } 

謝謝。

回答

0

請確保您已聯繫審覈團隊以在MyGlass上上傳APK,併爲他們提供準備使用的帳戶類型(例如com.cocoa.glasshelpme):在開始使用此API之前,需要執行以下步驟。

您可以在developers guide找到更多的信息。

UPDATE:剛剛看到您使用的參數爲userToken,參數爲accessToken; userToken應該是用戶點擊auth URL時由MyGlass提供的。

+0

在[開發者指南](https://developers.google.com/glass/develop/gdk/authentication#implementing_the_authentication_flow)中,Doc展示了我,** @param userToken將用戶令牌發送到您的auth回調URL ** 。但我剛剛得到了這樣的代碼:「code = 4/TOBVkDNEWIyC4hOOC5t9n0-dk-qYjdtyWFlUkdMqMwM.otEU4oXVh_UUBrG_bnfDxpICP7VXXXXX」',我將此代碼更改爲access_token和refresh_token,您可以讓我知道我可以在哪裏收到** userToken **? – j2rry 2014-10-27 12:04:31

+0

You正在混淆OAuth 2.0 Web流程和GDK認證:前者會爲您提供一個代碼,您需要交換OAuth 2.0令牌,這與GDK身份驗證完全無關。當用戶單擊以安裝您的Glassware for MyGlass:將用戶重定向到認證頁面時,它將成爲URL的一部分。 – Alain 2014-10-27 15:52:49