2013-08-27 3 views
5

Я генерации маркера с помощью GoogleUtilAuth.getToken(). Я также генерироваться два клиентских идентификаторов один для веб-страницы и один для андроид приложения и оба находятся в одном проекте .Followed эту ссылкуGoogleAuthException Неизвестный Источник

verification from back end server

вот мой код:

package com.example.tokengenerate; 

import java.io.IOException; 

import com.google.android.gms.auth.GoogleAuthException; 
import com.google.android.gms.auth.GoogleAuthUtil; 
import com.google.android.gms.auth.UserRecoverableAuthException; 
import com.google.android.gms.common.Scopes; 

import android.os.AsyncTask; 
import android.os.Bundle; 
import android.accounts.Account; 
import android.accounts.AccountManager; 
import android.app.Activity; 
import android.util.Log; 
import android.view.Menu; 
import android.widget.TextView; 

public class MainActivity extends Activity { 
    TextView tv; 
    String scope="audience:server:client_id:CLIENTID OF WEBPAGE"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     tv =(TextView)findViewById(R.id.printId); 
    new AsyncTask<Void, Void, Void>() { 
     String id=null; 
     @Override 
     protected void onPostExecute(Void result) { 
      // TODO Auto-generated method stub 
      tv.setText(id); 
      super.onPostExecute(result); 
     } 

     @Override 
     protected Void doInBackground(Void... params) { 
      // TODO Auto-generated method stub 

       String[] account=getAccountNames(); 
       for(int i =0;i<account.length;i++) 
       { 
        try { 
        Log.e("account name", account[i]); 
        id=GoogleAuthUtil.getToken(MainActivity.this, account[i], scope); 
         Log.e("google id",id); 
        } catch (UserRecoverableAuthException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (GoogleAuthException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
       } 



      return null; 
     } 
    }.execute(null,null,null); 


    } 
    private String[] getAccountNames() { 
     AccountManager mAccountManager = AccountManager.get(this); 
     Account[] accounts = mAccountManager.getAccountsByType(
       GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE); 
     String[] names = new String[accounts.length]; 
     for (int i = 0; i < names.length; i++) { 
      names[i] = accounts[i].name; 
     } 
     return names; 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

Вот мой Logcat:

08-27 19:19:54.641: W/System.err(9792): com.google.android.gms.auth.GoogleAuthException: Unknown 
08-27 19:19:54.651: W/System.err(9792):  at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source) 
08-27 19:19:54.651: W/System.err(9792):  at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source) 
08-27 19:19:54.651: W/System.err(9792):  at com.example.tokengenerate.MainActivity$1.doInBackground(MainActivity.java:45) 
08-27 19:19:54.661: W/System.err(9792):  at com.example.tokengenerate.MainActivity$1.doInBackground(MainActivity.java:1) 
08-27 19:19:54.661: W/System.err(9792):  at android.os.AsyncTask$2.call(AsyncTask.java:264) 
08-27 19:19:54.661: W/System.err(9792):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
08-27 19:19:54.661: W/System.err(9792):  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
08-27 19:19:54.661: W/System.err(9792):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
08-27 19:19:54.661: W/System.err(9792):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
08-27 19:19:54.661: W/System.err(9792):  at java.lang.Thread.run(Thread.java:864) 

Полностью застрял пожалуйста help.Not получать где я неправильно

+0

Можем ли мы увидеть результат Log.e («имя учетной записи»)? На первый взгляд, ваш код выглядит разумным –

+0

@TimBray Спасибо, сэр за ответ. В имени учетной записи он отображает emial Id, например, «[email protected]», и он дает эту ошибку, только когда я помещаю область = аудитория: server: client_id : CLIENTID OF WEBPAGE. Но если я поместил scope = https://www.googleapis.com/auth/plus, тогда я получил токен. –

+1

Вы можете попробовать добавить префикс 'oauth2:' в область. –

ответ

0

Используйте этот код, чтобы получить за рамки

String scope = "oauth2:" + Scopes.PROFILE; 

и использовать эту SCPE здесь

id=GoogleAuthUtil.getToken(MainActivity.this, account[i], scope); 

Тогда вы можете получить доступ tocken в переменной «id». Простой метод.

Смежные вопросы