问题描述
嗨,我在谷歌开发者控制台上创建了一个新项目后,我遇到了 gmail api 的问题
然后我启用了 gmail api,并为 api 建立了 OAuth2.0 密钥
然后我在我的应用程序中启用了使用谷歌登录,但问题是我无法从登录用户的 gmail 帐户获取任何数据
请帮助我或提供任何建议来帮助我
这是我的代码
package com.example.spamfilteringusingai_2;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolBox.StringRequest;
import com.android.volley.toolBox.Volley;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInClient;
import com.google.android.gms.auth.api.signin.GoogleSignInoptions;
import com.google.android.gms.common.api.ApiException;
import com.google.android.gms.common.api.Scope;
import com.google.android.gms.tasks.Task;
import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential;
import com.google.api.client.util.ExponentialBackOff;
import com.google.api.services.gmail.GmailScopes;
import java.util.Arrays;
public class MainActivity extends AppCompatActivity {
GoogleSignInClient mGoogleSignInClient;
GoogleAccountCredential mCredential;
private static final int RC_SIGN_IN=9001;
private static final String[] ScopES = {
GmailScopes.GMAIL_LABELS,GmailScopes.GMAIL_COMPOSE,GmailScopes.GMAIL_INSERT,GmailScopes.GMAIL_MODIFY,GmailScopes.GMAIL_READONLY,GmailScopes.MAIL_GOOGLE_COM
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mCredential = GoogleAccountCredential.usingOAuth2(
getApplicationContext(),Arrays.asList(ScopES))
.setBackOff(new ExponentialBackOff());
GoogleSignInoptions gso = new GoogleSignInoptions.Builder(GoogleSignInoptions.DEFAULT_SIGN_IN)
.requestemail()
.requestScopes(new Scope(GmailScopes.GMAIL_SEND),new Scope(GmailScopes.GMAIL_READONLY),new Scope(GmailScopes.GMAIL_COMPOSE))
.requestServerAuthCode("884385265121-b0gtdrn1s0dkn2u1vk8m6qlp98mg5s5j.apps.googleusercontent.com")
.build();
mGoogleSignInClient = GoogleSignIn.getClient(this,gso);
}
public void onLoginButtonpressed(View view){
signIn();
}
private void signIn() {
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent,RC_SIGN_IN);
}
@Override
public void onActivityResult(int requestCode,int resultCode,Intent data) {
super.onActivityResult(requestCode,resultCode,data);
if (requestCode == RC_SIGN_IN) {
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
handleSignInResult(task);
}
}
private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
try {
GoogleSignInAccount account = completedTask.getResult(ApiException.class);
// Signed in successfully,show authenticated UI.
Log.w("info","Done" +account.getServerAuthCode());
Log.w("info","Done" +account.getId());
Log.w("info","Done" +account.getEmail());
Log.w("info","Done" +account.getdisplayName());
Log.w("info","Done" +account.getAccount());
String url="https://www.googleapis.com/gmail/v1/users/joshaer17@gmail.com/messages";
RequestQueue requestQueue = Volley.newRequestQueue(this);
StringRequest request = new StringRequest(Request.Method.GET,url,new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("respos",response);
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("respos",error.toString());
}
});
} catch (ApiException e) {
Log.w("info","signInResult:Failed code=" + e.getStatusMessage());
}
}
}
谢谢大家
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)