我正在将Android Plus集成到我的Android应用中。我已在Google API控制台中创建了该项目。我创建了OAuth客户端ID,我加倍检查包名称和密钥库SHA1,但两者都是正确的,但我仍然得到Internal Error Occur
。
我见过很多线程但主要是说与SHA1和包名相关,这在这里是正确的。
伙计们分享您的观点。
编辑:我已经使用debug.keystore和自定义创建的密钥库进行了测试,但没有任何对我有用。
setScopes("PLUS_LOGIN")
对我也没有帮助。
public class MainActivity extends Activity implements ConnectionCallbacks,
OnConnectionFailedListener, OnClickListener {
private static final int REQUEST_CODE_RESOLVE_ERR = 9000;
private ProgressDialog mConnectionProgressDialog;
private PlusClient mPlusClient;
private ConnectionResult mConnectionResult;
private static final String TAG = "Google Plus Demo";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPlusClient = new PlusClient.Builder(this, this, this)
.setActions("http://schemas.google.com/AddActivity",
"http://schemas.google.com/BuyActivity")
.setScopes(Scopes.PLUS_LOGIN).build();
// Progress Bar to be displayed if the connection failure is not
// resolved.
mConnectionProgressDialog = new ProgressDialog(this);
mConnectionProgressDialog.setMessage("Signing in...");
findViewById(R.id.sign_in_button).setOnClickListener(this);
}
@Override
protected void onStart() {
super.onStart();
mPlusClient.connect();
}
@Override
protected void onStop() {
super.onStop();
mPlusClient.disconnect();
}
@Override
protected void onActivityResult(int requestCode, int responseCode, Intent intent) {
if(requestCode == REQUEST_CODE_RESOLVE_ERR && responseCode == RESULT_OK) {
mConnectionResult = null;
mPlusClient.connect();
}
}
@Override
public void onConnectionFailed(ConnectionResult result) {
if(mConnectionProgressDialog.isShowing()) {
// The user clicked on the sign-in button already. Start to resolve
// connection errors. Wait until onConnected() to dismiss the
// connection dialog.
if(result.hasResolution()) {
try {
result.startResolutionForResult(this, REQUEST_CODE_RESOLVE_ERR);
} catch(SendIntentException e) {
mPlusClient.connect();
}
}
}
// Save the result
mConnectionResult = result;
}
@Override
public void onConnected(Bundle connectionHint) {
String accountName = mPlusClient.getAccountName();
Toast.makeText(this, accountName, Toast.LENGTH_LONG).show();
mConnectionProgressDialog.dismiss();
}
@Override
public void onDisconnected() {
Log.d(TAG, "Disconnected");
}
@Override
public void onClick(View view) {
if(view.getId() == R.id.sign_in_button && !mPlusClient.isConnected()) {
if(mConnectionResult == null) {
mConnectionProgressDialog.show();
} else {
try {
mConnectionResult.startResolutionForResult(this, REQUEST_CODE_RESOLVE_ERR);
} catch(SendIntentException e) {
// Try connecting again
mConnectionResult = null;
mPlusClient.connect();
}
}
}
}
}
日志
01-27 20:22:23.871: I/GLSUser(1699): GLS error: INVALID_SCOPE xyz@gmail.com oauth2:PLUS_LOGIN
01-27 20:22:23.871: W/GLSActivity(1699): [aia] Status from wire: INVALID_SCOPE status: INVALID_SCOPE
01-27 20:22:23.965: W/InputManagerService(1536): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@4076b580
01-27 20:22:24.020: I/eFrame(3180): pkgname_before:com.google.android.gms class:com.xicom.appdemo.MainActivity
01-27 20:22:24.027: D/SurfaceFlinger(1536): Layer[34bee8]:: Tile format buffer w[256] h[64] f[1] v[0x47855000] p[0x97fd5000] sz[65536]
01-27 20:22:25.012: V/AudioFlinger(1323): Audio hardware entering standby, mixer 0x6f228, mSuspended 0
01-27 20:22:25.012: D/AudioStreamOutALSA(1323): AudioStreamOutALSA::standby--pause
01-27 20:22:25.106: V/AudioFlinger(1323): MixerThread 0x6f228 TID 1473 going to sleep
01-27 20:22:27.684: W/PowerManagerService(1536): Timer 0x3->0x3|0x3
01-27 20:22:27.691: D/BatteryService(1536): update start
代码:
mPlusClient = new PlusClient.Builder(this, this, this)
.setActions("http://schemas.google.com/AddActivity",
"http://schemas.google.com/BuyActivity")
.build();
记录第二个版本
01-28 22:25:16.164: D/SurfaceFlinger(1536): Layer[37c9c0]:: Tile format buffer w[256] h[320] f[1] v[0x4ac99000] p[0x94741000] sz[327680]
01-28 22:25:17.007: D/SurfaceFlinger(1536): Layer[8a5a68] [4] non-RGB565 reloads
01-28 22:25:17.250: I/fno(2652): I/O exception (javax.net.ssl.SSLException) caught when processing request: Write error: ssl=0x25d728: I/O error during system call, Broken pipe
01-28 22:25:17.250: I/fno(2652): Retrying request
01-28 22:25:18.015: D/SurfaceFlinger(1536): Layer[8a5a68] [10] non-RGB565 reloads
01-28 22:25:18.101: V/AudioFlinger(1323): Audio hardware entering standby, mixer 0x6f228, mSuspended 0
01-28 22:25:18.101: D/AudioStreamOutALSA(1323): AudioStreamOutALSA::standby--pause
01-28 22:25:18.187: D/BatteryService(1536): update start
01-28 22:25:18.195: V/AudioFlinger(1323): MixerThread 0x6f228 TID 1473 going to sleep
01-28 22:25:19.015: D/SurfaceFlinger(1536): Layer[8a5a68] [10] non-RGB565 reloads
01-28 22:25:19.484: W/GLSActivity(2652): [aia] Status from wire: INVALID_CLIENT_ID status: null
01-28 22:25:19.484: W/GLSActivity(2652): [aia] Status from wire: INVALID_CLIENT_ID status: null
01-28 22:25:19.484: I/GLSUser(2652): GLS error: INVALID_CLIENT_ID xyz@gmail.com oauth2:https://www.googleapis.com/auth/plus.login
01-28 22:25:19.484: W/GLSActivity(2652): [aia] Status from wire: Unknown status: UNKNOWN
01-28 22:25:19.570: D/dalvikvm(20673): GC_EXTERNAL_ALLOC freed 163K, 43% free 3397K/5959K, external 511K/517K, paused 47ms
01-28 22:25:19.664: W/InputManagerService(1536): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@40605c00
01-28 22:25:19.781: D/SurfaceFlinger(1536): Layer[278dc0]:: Tile format buffer w[256] h[64] f[1] v[0x49520000] p[0x97fcc000] sz[65536]
01-28 22:25:19.835: I/eFrame(20257): pkgname_before:com.google.android.gms class:com.xicom.appdemo.MainActivity
01-28 22:25:20.046: D/dalvikvm(20257): GC_CONCURRENT freed 384K, 49% free 3021K/5895K, external 412K/517K, paused 4ms+6ms
01-28 22:25:20.757: W/PowerManagerService(1536): Timer 0x3->0x3|0x3
01-28 22:25:23.203: D/BatteryService(1536): update start
答案 0 :(得分:45)
我遇到了同样的问题,我在开发者控制台中解决了这个问题。
事实证明,您需要在同意屏幕上填写有关项目的必要信息。
解决方案:
选择您的电子邮件并插入您的项目名称。下次启动应用程序时,您将获得正确的同意屏幕,之后一切正常。
答案 1 :(得分:2)
你是否在logcat中获得任何输出以获得错误?如果没有,请尝试启用详细日志记录(请参阅https://developers.google.com/+/mobile/android/getting-started#frequently_asked_questions)
adb shell setprop log.tag.GooglePlusPlatform VERBOSE
编辑:感谢您添加日志。 GLS错误很有意思:
I / GLSUser(1699):GLS错误:INVALID_SCOPE xyz@gmail.com oauth2:PLUS_LOGIN
您是否可以检查您是否已在API控制台项目中启用了Google+ API,并且还可以尝试完全删除setScopes行(PLUS_LOGIN将是默认值,因此这似乎是测试是否有任何有趣内容的最简单方法)。
我不确定PLUS_LOGIN在其中是否表示替换没有发生,或者只是日志记录看起来像这样,但删除该行应将其从等式中移除。
编辑 - 根据您更新的转储,范围现在看起来不错,但那里存在无效的客户端ID错误。确保客户端ID中的sha 1周围没有任何尾随空格,并且包名称完全匹配。另请尝试清除Google Play服务中的缓存(从Google设置应用中的菜单中清除数据)。
答案 2 :(得分:0)
如果您未填写"同意屏幕"
答案 3 :(得分:0)
就我而言,花了一些时间才能看到同意屏幕。更改api控制台后,最好等待5-10分钟,然后尝试登录过程。