次のリンクで提供される指示に従って、アプリケーションにGoogleプラスログインを統合しようとしています: https://developers.google.com/+/quickstart/Android#install-sdk
私はすべての指示に完璧に従っています。 Android-sdkで提供される実際のデバイスでサンプルアプリケーションを実行し、signin
ボタンをクリックすると、An internal error occurred
私は何を間違えていますか?
これは、APIコンソールプロジェクトでクライアントIDの署名を設定していない場合、またはkeytoolから間違ったキー値をコピーした場合に発生する可能性があります。その方法は、手順7、8、9、および10の クイックスタートガイド の手順に記載されています。
この問題があり、SHA
とパッケージ名が異なる10個の異なるクライアントIDを作成した後でも、Consent screen
を入力する必要があることが判明するまで動作しません。
GoogleDevelopers Consoleによると-
クライアントIDを使用してプライベートデータへのアクセスをリクエストすると、同意画面がユーザーに表示されます。
PlusClient.Builderで.setScopes("PLUS_LOGIN")
を削除することで問題を解決しました。
Androidアプリケーションでこのトーストメッセージエラーが発生しました:
An internal error occurred
要約:
AndroidアプリとAndroid APIサーバーがアクセスを許可します。正しいパッケージ名を追加していないことが原因と考えられますまたは、SHA1フィンガープリントを修正します。間違った設定を削除して正しく実行するには、次の手順を実行しました。
修正手順:
Google APIコンソールにアクセスしてログインします: https://code.google.com/apis/console
[APIアクセス]タブをクリックします。
[別のクライアントIDを作成]ボタンをクリックします。
「インストール済みアプリケーション」ラジオボタンを選択します。
「Android」ラジオボタンを選択します。
上記のエラーを表示しているAndroidアプリのパッケージ名を入力してください。PlusSampleActivity.Java
コードファイルの先頭で定義されています。私にとってはcom.googleです。 Android.gms.samples.plus
SHA1フィンガープリント値を取得します。
a。コマンドkeytool -list -v -keystore /home/el/.Android/debug.keystore
を使用します。パスワードを入力します。設定しない場合、デフォルトのパスワードは「Android」です。
b。 SHA1フィンガープリントが画面に表示されるので、それをコピーします。
上記の値を「署名証明書の指紋(SHA1):」ボックスに貼り付けます。
「クライアントIDを作成」ボタンをクリックします。
Androidアプリケーションを再度実行し、[サインイン]をクリックします。
これで、「GoogleでGoogle+ SDKにサインインする」アクティビティが表示されます。
私の場合、解決策は、同意画面で実際にメールアドレスを設定することでした。最初に、このデータなしでフォームをエラーなしで保存できる奇妙な理由です。他の人が提案したことを確認した後、そのフォームに自分のメールアドレスを設定するとすぐに、機能し始めました。
私は幸運なしに完全な研究でこれを修正する方法を探していましたが、最終的に私は次のアプローチでこの問題を解決することができました。
これを解決する前に(少なくともtiがどのように機能したか)、ドキュメントのすべてが正しく、コード行などを変更する必要がないと言わなければなりません。 https://cloud.google.com/consoleクラウドコンソールのバグのように見えます
まず、ドキュメントに記載されている正しいSHA1とプロジェクトのパッケージ名を取得していることを確認しますhttps://developers.google.com/+/quickstart/Android
今、私が気づいたこのバグ(少なくとも私にとって)は、私のクラウドコンソールで、私が作成したプロジェクトは古いインターフェースでずっと前であり、数ヶ月前に新しいGUIに移行したことでした。コンソールでは、新しいプロジェクトには自動生成されたproject idがありますatlantean-ares-331古いプロジェクトはproject idとして表示されないlong integer値を取得しました。したがって、プロジェクトが古いGUIで作成され、OAuthの新しいクライアントIDを作成したばかりの場合、Googleでサインインしようとするとトースト「内部エラーが発生しました」が表示されます。
修正方法
どのプロジェクトにも同じパッケージ名がないことを確認してくださいOAuthこれ以外の場合に使用するものとクライアントID ErrorThis client ID is globally unique and is already in use
。(古いパッケージを削除する必要がありますOAuth今使用するパッケージ名と同じクライアントID)。
資格情報OAuth用の新しいクライアントIDの作成に進みます。
インストールされたアプリケーション
Android
プロジェクトのパッケージ名とSHA1を入力します
完了
問題に対する私の解決策は次のとおりでした。
他の人が推奨することはすべてやったので、パッケージ名とSHA1キーに関する誤字はありませんでした。また、キーを削除してから再度追加しようとしましたが、役に立ちませんでした。
キーを削除し、newプロジェクトを作成するのに役立ちました( https://code.google.com/apis/console )そして、そこにクライアントID(package + sha1を使用)を再度作成します。その後(5秒)すべてが私のAndroidデバイスで動作しました。
私の場合、問題はアプリのパッケージ名を変更し、開発コンソールで更新しなかったことです。
この問題は、APIコンソールからの許可に関連しています。
sCOPE_PLUS_LOGINに関連する権限を使用している場合、APIコンソールで、OAuthクライアントID用と公開APIキー用の2つのキーを作成する必要があります。
デバッグにdebug.keystoreにSHA1を使用し、アプリケーションをエクスポートした後、アプリケーションのエクスポートに使用したキーストアにSHA1を生成するのを忘れると、同じ問題が発生しました。
テストには必ず組み込みのデバッグキーストアを使用してください。他のすべてが正常に機能していましたが、開発者コンソールの資格情報に本番キーストアのSHA1フィンガープリントを設定していたため、機能しませんでした。
見落とされることが多いのはパッケージ名です。上記のEric Leschinskiによるステップ6を明確にしたい(コメントはできません):必要なパッケージはアクティビティのパッケージではなく、アプリのマニフェストのパッケージです。
AndroidManifest.xmlのルート要素から正しい値を取得できます。
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.ntk.darkmoor"
Android:versionCode="1"
Android:versionName="1.0" >
この例では、クライアントIDの作成中に「com.ntk.darkmoor」を定義します
Google IO 2013に目を向け、PlusClientの初期化を変更し、それが機能するようになりました。
public static final String AUTH_SCOPES[] = {
Scopes.PLUS_LOGIN,
"https://www.googleapis.com/auth/userinfo.email",
"https://www.googleapis.com/auth/developerssite" };
mPlusClient = new PlusClient.Builder(this, this, this)
.setScopes(AUTH_SCOPES)
.build();
Googleコンソールでプロジェクトを再作成することは、他のいくつかの試みの後でうまくいきました。
何らかの理由で、私のプロジェクトにはプロジェクトIDがありません(古いコンソール/新しいコンソール?)。
Thano(上記)が示唆したように、新しいプロジェクトを作成し、クライアントIDを作成しました...アドバイスありがとうございます!!
私にとっては、デバッグキーを使用してインストールするときに、プロダクションキーを使用しようとしていました。適切なキーストアから適切なSHA1を使用していることを確認してください。
解決策をありがとうThanoクラウドコンソールで新しい外観を取得すると、新しいプロジェクトにはこのatlantean-ares-331のような自動生成されたプロジェクトIDがありますが、古いプロジェクトには表示されないプロジェクトIDとして長い整数値があります。古いGUIで、OAuthの新しいクライアントIDを作成したばかりの場合、Googleでサインインしようとすると「内部エラーが発生しました」というトーストが表示されます。」
サンプルアプリケーションを実行しようとしたときにこのエラーに直面した場合、またはその中で正常に実行されていた他のマシンで作成したプロジェクトをコピーし、実行しようとしている他のマシンでそのようなポップアップエラーを与えた場合、以下の方法に従うことができます。
テスト/デバッグ目的でアプリを構築している場合、
1.プロジェクトをコピーし、キーストアに提供されたパッケージ名とパスに対して他のマシンで実行する場合、新しいSHA1を生成します。
2.新しく生成されたSHA1の開発者コンソールでClientIdを変更し、プロジェクトをコピーして実行しようとしている新しいマシンで実行します。