मैं Google+ एपीआई का उपयोग कर रहा हूं और मुझे बुनियादी प्रोफ़ाइल जानकारी प्राप्त करने की आवश्यकता है। मैं उपयोगकर्ता में सही ढंग से लॉग इन कर सकता हूं।

Xamarin दस्तावेज़ीकरण में मुझे निम्नलिखित कॉल मिली:

var person = PlusClass.PeopleApi.GetCurrentPerson(_googleApiClient);

लेकिन यह बहिष्कृत के रूप में दिखाया गया है। कोई जानता है कि प्रोफ़ाइल जानकारी कैसे प्राप्त करें?

0
Sebi 10 जुलाई 2016, 20:55

2 जवाब

सबसे बढ़िया उत्तर

आपका उत्तर ठीक है, लेकिन कुछ और शोध के बाद मुझे एक बेहतर समाधान मिला। मैं अब "नया" GoogleSignInApi का उपयोग करता हूं। यदि आप dll Xamarin.GooglePlayServices.Auth डालते हैं तो यह काम करता है।

इस लाइन के साथ उपयोगकर्ता को OnActivityResultMethod() के भीतर लाना संभव है:

var signInInfo = Auth.GoogleSignInApi.GetSignInResultFromIntent(data);

अधिक जानकारी: https://developers.google.com/identity/sign- इन/एंड्रॉइड/साइन-इन

0
Sebi 11 जुलाई 2016, 01:16

उपयोगकर्ता के ईमेल को पुनः प्राप्त करने के लिए PlusClass.AccountApi.GetAccountName का उपयोग करें।

if (client.IsConnected)
{
    var emailAddress = PlusClass.AccountApi.GetAccountName(client);
    Log.Debug(TAG, emailAddress);
}

नोट: इस डेटा तक पहुंचने के लिए आपको GET_ACCOUNTS अनुमति की आवश्यकता होगी:

AndroidManifest के माध्यम से मैन्युअल प्रविष्टि:

<uses-permission android:name="android.permission.GET_ACCOUNTS" />

या मैनिफेस्ट संपत्ति संपादक के माध्यम से:

enter image description here

प्रोफ़ाइल जानकारी:

नोट: सभी उपयोगकर्ताओं के पास असाइन की गई/उपलब्ध सभी प्रोफ़ाइल जानकारी नहीं होती है

अपने GoogleApiClient.Builder में PlusClass.ScopePlusProfile जोड़ें:

.AddScope(PlusClass.ScopePlusProfile)

आईपर्सन उदाहरण:

var emailAddress = PlusClass.AccountApi.GetAccountName(client);
Log.Debug(TAG, emailAddress);
var peopleResult = await PlusClass.PeopleApi.LoadAsync(client, new string[] { "me" } );
if (peopleResult.Status.StatusCode == CommonStatusCodes.Success)
{
    if (peopleResult.PersonBuffer.Count > 0)
    {
        try // try/catch is needed as emumerator will always(?) fault in move next, broken api
        {
            foreach (var person in peopleResult.PersonBuffer)
            {
                Log.Debug(TAG, person.DisplayName);
                Log.Debug(TAG, person.Id);
                Log.Debug(TAG, person.Url);
                if (person.HasImage)
                    Log.Debug(TAG, person.Image.Url);
                Log.Debug(TAG, person.AboutMe);
            }
        }
        catch (Exception e)
        {
            Log.Debug(TAG, $"{e.Message}");
        }
        finally
        {
            peopleResult.Release(); // prevent memory leak
        }
    }
}
else
{
    Log.Debug(TAG, $"{peopleResult.Status.StatusMessage}");
}

नमूना आउटपुट:

[MyGPlus] xxxxxx@gmail.com
[MyGPlus] 00000000000000000000
[MyGPlus] Sushi Hangover
[MyGPlus] https://plus.google.com/105138306217936737331
[MyGPlus] https://lh6.googleusercontent.com/-F3PtIL2g-dM/AAAAAAAAAAI/AAAAAAAAAVw/BlrXmOgCSoY/photo.jpg?sz=50
3
SushiHangover 10 जुलाई 2016, 22:56