您好我创建了一个Android项目,我在其中进行主要活动
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String ss="https://accounts.google.com/o/oauth2/auth?client_id=anonymous&redirect_uri=https://cloudspokeproject.appspot.com/oauth2callback&response_type=code&scope=https://www.googleapis.com/auth/apps.groups.settings https://apps-apis.google.com/a/feeds/groups/";
Uri url=Uri.parse(ss);
Intent in=new Intent(Intent.ACTION_VIEW,url);
startActivity(in);
}
然后创建了一个响应活动 代码
public class Response extends Activity {
@Override
public void onCreate(Bundle bundle){
super.onCreate(bundle);
TextView text=new TextView(this);
Uri uri=this.getIntent().getData();
String code=uri.getQueryParameter("code");
URL url;
try {
url = new URL("https://accounts.google.com/o/oauth2/token");
String param="code="+code+"&client_id=anonymous&client_secret=anonymous&redirect_uri=https://cloudspokeproject.appspot.com/oauth2callback&grant_type=authorization_code";
HttpURLConnection connection =
(HttpURLConnection)url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
connection.getOutputStream().write( param.getBytes() );
InputStream str= connection.getInputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(str));
String l="";
String l1="";
while((l=reader.readLine())!=null){
l1+=l;
}
text.setText(l1);
setContentView(text);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
这是我的清单文件代码
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="15" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Response"
android:label="Hello World"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:host="cloudspokeproject.appspot.com/oauth2callback" android:scheme="https"/>
</intent-filter>
</activity>
</application>
我正在尝试为应用程序实施Google身份验证,主要活动正在打开Google登录,并且在登录后将其重定向到clouspokeproject.appspot.com/oauth2callback但是因为我在menifest中的响应活动中放置了一个意图过滤器。在浏览器中调用url cloudspokeproject.apspot.com/oauth2callback然后android应该将其重定向到活动Response.i成功实现了twitter和其他几个api的oauth但这次它没有重定向到Response活动 任何人都可以告诉我哪里错了。我知道错误是非常小的请指出我,以便我能纠正它。
答案 0 :(得分:0)
您发出的意图是打开浏览器而不是调用您的响应活动
答案 1 :(得分:0)
嗨返回我的活动意图过滤器应该像
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:host="cloudspokeproject.appspot.com" android:scheme="https"/>
</intent-filter>
我必须在host属性中删除/ oauth2callback,因为它是一个非常罕见的url,在项目中只使用一次,所以它现在对我来说很好。