[英]Google Cloud Endpoints OAuth Authentication
我正在開發一個具有在Google App Engine上運行的后端的Android add,並且最近激活了OAuth2身份驗證。 我的問題是,當我進行全新安裝且用戶之前未使用其Google帳戶登錄時,我會顯示登錄對話框,然后他可以通過使用Facebook按鈕登錄來登錄。 從Facebook收到數據后,我向后端進行了授權呼叫,問題是該操作無法執行。 如果我重新啟動應用程序,並且用戶已經使用他的Google帳戶登錄,則一切正常。 PS:在兩種情況下,我都在憑據中設置了所選的帳戶名。
有什么想法為什么在這種情況下不發送請求?
用於創建憑證的代碼:
settings = getSharedPreferences("whostrPrefs", MODE_PRIVATE);
credential = GoogleAccountCredential.usingAudience(this, ID);
setSelectedAccountName(settings.getString(PREF_ACCOUNT_NAME, null));
if(credential.getSelectedAccountName() != null)
{
//all ok
Log.d("AccountName", "Everything is ok!");
}
else
{
Log.d("AccountName", "User needs to loggin!");
chooseAccount();
}
setSelectedAccount方法:
private void setSelectedAccountName(String accountName)
{
SharedPreferences.Editor editor = settings.edit();
editor.putString(PREF_ACCOUNT_NAME, accountName);
editor.commit();
credential.setSelectedAccountName(accountName);
this.accountName = accountName;
}
ChooseAccount方法:
void chooseAccount()
{
startActivityForResult(credential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER);
}
還有onActivityResult方法的代碼段:
case REQUEST_ACCOUNT_PICKER:
if(data != null && data.getExtras() != null)
{
String accountName = data.getExtras().getString(AccountManager.KEY_ACCOUNT_NAME);
if(accountName != null)
{
setSelectedAccountName(accountName);
SharedPreferences.Editor editor = settings.edit();
editor.putString(PREF_ACCOUNT_NAME, accountName);
editor.commit();
Log.d("AccountName", "User is authorized!");
//user is authorized
}
}
break;
和實際的調用:
Userendpoint.Builder builder = new Userendpoint.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential);
Userendpoint service = builder.build();
try
{
response = service.loginuser(params[0], params[1], params[2], params[3], longitude,latitude).execute();
}
關於可能是什么問題的任何想法? 我做錯什么了嗎? 代碼到達我打電話的地方...但是沒有通過。
LE:對端點的調用是使用Google登錄憑據(如Google App Engine網站上的教程中所示)進行的,但是由於某種原因根本沒有執行該調用。 沒有憑據的呼叫將引發正確的未授權異常。
內置的Cloud Endpoints Auth僅適用於Google登錄(或OpenID,具體取決於您在創建項目時選擇的身份驗證類型)。
為了與其他任何提供程序進行身份驗證,您需要編寫自定義代碼。 您可以通過在API參數中傳遞facebook身份驗證信息來實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.